Reputation: 4756
I need to give a class to a <tr>
if a property of item has the same value as a property from an object in an array.
Here's the code I currently have:
<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0">
however now I receive the error:
Bindings cannot contain assignments
I'm not sure if what I'm doing is bad practice, or if I'm just making syntax errors.
This is the only way I know to achieve what I want, but it's not working
Upvotes: 49
Views: 57140
Reputation: 21
There is a little problem with that. Take as an example, that I want to stop showing the date to the user which is equal to 0000.00.00, so, by taking the inline expression binding I can find it right to:
{{(appointment_date === "0000.00.00") ? ' ' : appointment_date}}
Upvotes: 2
Reputation: 18657
Its a bad practice to use expressions
in angular bindings
Move the class
expression into controller.
export class AppComponent {
title = 'Groups';
getClass(item): void {
// add filter logic here
return this.definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0
}
}
The tr will be something like,
<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="getClass(item)">
Upvotes: 69