Angular 2 - привязки не могут содержать присвоения
Мне нужно дать класс <tr>
, если свойство элемента имеет то же значение, что и свойство из объекта в массиве.
Здесь код у меня есть:
<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0">
однако теперь я получаю ошибку:
Bindings cannot contain assignments
Я не уверен, что то, что я делаю, - это плохая практика, или если я просто делаю синтаксические ошибки.
Это единственный способ узнать, чего я хочу, но он не работает
Ответы
Ответ 1
Плохая практика использования expressions
в angular bindings
Переместите выражение class
в контроллер.
export class AppComponent {
title = 'Groups';
getClass(item): void {
// add filter logic here
return this.definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0
}
}
Значение tr будет примерно таким,
<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="getClass(item)">
Ответ 2
Есть небольшая проблема с этим. Возьмите в качестве примера, что я хочу прекратить показывать пользователю дату, равную 0000.00.00, поэтому, взяв привязку встроенного выражения, я могу найти это правильно:
{{(appointment_date === "0000.00.00") ? ' ' : appointment_date}}