web-dev-qa-db-fra.com

Angular 2 - Les liaisons ne peuvent pas contenir d'affectations

Je dois donner un cours à un <tr> si une propriété d'élément a la même valeur qu'une propriété d'un objet dans un tableau.

Voici le code que j'ai actuellement:

<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0">

mais maintenant je reçois le erreur:

Bindings cannot contain assignments

Je ne sais pas si ce que je fais est une mauvaise pratique, ou si je fais juste des erreurs de syntaxe.

C'est le seul moyen que je connaisse pour réaliser ce que je veux, mais ça ne marche pas

18
Nicolas

C'est une mauvaise pratique d'utiliser expressions dans angular bindings

Déplacez le classexpression dans le contrôleur.

export class AppComponent {
    title = 'Groups';

    getClass(item): void {

      // add filter logic here
      return this.definitionDetails.Groups.filter(i => i.AbsenceReservationGroupID === item.ID).length > 0

    }
}

Le tr sera quelque chose comme,

<tr *ngFor="let item of closingDayGroupsList" [class.inactive]="getClass(item)">
32
Sravan

Il y a un petit problème avec ça. Prenons comme exemple, que je veux arrêter d'afficher la date à l'utilisateur qui est égale à 0000.00.00, donc, en prenant la liaison d'expression en ligne, je peux la trouver directement dans:

 {{(appointment_date === "0000.00.00") ? ' ' : appointment_date}} 
1
Shubham Dave