web-dev-qa-db-fra.com

Angular 2: "Attendait que les opérateurs soient de type similaire ou toute" erreur de peluchage

J'ai un fichier de service partagé qui définit une variable comme ceci:

export class SharedService {
    activeModal: String;
}

Ensuite, j'ai un fichier de composant qui importe le service et le définit:

constructor(public sharedService: SharedService) {
}

Dans le fichier modèle de ce composant, je vérifie la valeur du modal:

<div *ngIf="sharedService.activeModal === 'login'"></div>

Tout fonctionne bien, mais dans l'éditeur, la partie sharedService.activeModal === 'login' affiche une ligne rouge ondulée en dessous et survolant cette erreur de peluchage:

[Angular] Expected the operants to be of similar type or any
property sharedService of ModalComponent

Des idées sur ce que je fais mal?

8
yodalr

Essayez la minuscule string (la primitive, plutôt que le type d'objet wrapper String) dans la déclaration de activeModal.

12
Matt McCutchen

Pour ceux qui ont la même erreur mais la solution ne s'applique pas à vous, assurez-vous que vous ne comparez pas les énumérations aux chaînes, si c'est le cas, créez un membre à votre classe et affectez-lui l'énumération, de sorte que vous auriez:

class LalaComponent {
  someEnum = SomeEnum;
  randomValue: SomeEnum;
}

et en html

<ng-container *ngIf="randomValue === someEnum.option1" >
</ng-container>
1
Bitzu

Vous pouvez définir pour supprimer toutes les erreurs futures si vous souhaitez ajouter un type supplémentaire

activeModal: any 
0
Prafulla Agarwal