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}}