Is it possible to apply dynamic top and left values for ngFor repeated span element in Angular 4?
1 Answers
You can use:
- the
[style.anything]binding, eg:<span [style.color]="red"></span> - the
[ngStyle]binding that allows specifying multiple CSS properties at once, eg:<span [ngStyle]="{'color': 'red', 'font-weight': condition? 'bold':'300'}"></span> - the
[className]binding to apply a CSS class name dynamically, eg:<span [className]="condition? 'redText': 'blueText'"></span> the
[ngClass]binding that allows specifying multiple CSS classes at once, just likengStyledoes for CSS properties, eg:<span [ngClass]="{'redText': condition1, 'blueText': condition2}"></span>[ngClass]receives an object as its input, and applies each one of that object's keys only if the respective value evaluates to true.For instance, if you're iterating over the array
items_array:<span *ngFor="let i of items_array" [ngClass]="{'redText': i.shouldBeRed, 'blueText': i.shouldBeBlue}"> The span text </span>the CSS class of each element (
i) will be:redTextif the attributei.shouldBeRedevaluates to true (that is: it'strue,1, a non-empty string, or a non-null object;blueTextif the attribute i.shouldBeBlue evaluates to true;redText blueTextif both attributes evaluate to true.
In your case, I guess that [ngStyle] would be appropriate:
<span *ngFor="let i of items_array"
[ngStyle]="{'top': expression1, 'left': expression2}">
The span content
</span>
- 9,693
- 5
- 47
- 64