Edit: This answer is related to Angular2+! Sorry, I missed the tag!
Original answer:
As for the very simple case when you only want to apply (or set) an attribute if a certain Input value was set, it's as easy as
<my-element [conditionalAttr]="optionalValue || false">
It's the same as:
<my-element [conditionalAttr]="optionalValue ? optionalValue : false">
(So optionalValue is applied if given otherwise the expression is false and attribute is not applied.)
Example: I had the case, where I let apply a color but also arbitrary styles, where the color attribute didn't work as it was already set (even if the @Input() color wasn't given):
@Component({ selector: "rb-icon", styleUrls: ["icon.component.scss"], template: "<span class="ic-{{icon}}" [style.color]="color==color" [ngStyle]="styleObj" ></span>", }) export class IconComponent { @Input() icon: string; @Input() color: string; @Input() styles: string; private styleObj: object; ... }
So, "style.color" was only set, when the color attribute was there, otherwise the color attribute in the "styles" string could be used.
Of course, this could also be achieved with
[style.color]="color"
and
@Input color: (string | boolean) = false;
ng-attr="expression".contentEditabledirective.<h1 ng-attr-contenteditable="{{editMode && true : false}}">{{content.title}}</h1>