2017-08-30 12 views
1

En Angulaire est-il possible d'utiliser les drapeaux Enum de TypeScript dans le gabarit?
Je reçois un rejet avec l'opérateur de bit "&".
Je suppose que ce n'est pas possible, juste une double vérification.Utilisation de drapeaux TS Enum dans le gabarit Angular 2+

export enum Flags { 
    Virgin = 0, 
    Loading = 1 << 0, 
    Loaded = 1 << 1, 
    Hidden = 1 << 2, 
} 
// component.ts 
    public flags = Flags; 
// component.html 
    *ngIf="(userDetailsFlags$ | async) & flags.Loaded" 
// Error: 
Parser Error: Unexpected token &, expected identifier, keyword, or string at 

Mise à jour: Pour tous commentaires sur l'utilisation de "& &" au lieu de "&", s'il vous plaît lire this document first.
Je connais très bien la différence entre les deux.

+0

Etes-vous sûr que vous ne devriez pas utiliser '' && à la place? –

+1

Dans '* ngIf' d'Angular, vous devriez lui passer une valeur' boolean'. Vous ne pouvez donc pas appliquer une opération au niveau du bit dans cette expression. Je pense que le moteur de template ne peut pas reconnaître la syntaxe '&'. –

+0

La confusion semble provenir d'une tentative d'utilisation d'une expression au niveau du bit dans quelque chose qui attend une expression logique. '&' n'est pas accepté dans le modèle comme je l'ai mentionné, mais vous pouvez créer une méthode de type dièse pour utiliser l'opérateur au niveau du bit et retourner un booléen. –

Répondre

0

L'utilisation correcte de ET dans un modèle est l'opérateur logique double esperluette &&. Bitwise n'est pas disponible directement dans le modèle.

*ngIf="(userDetailsFlags$ | async) && flags.Loaded" devrait faire l'affaire, mais si vous voulez appliquer un bit, vous pouvez le faire au sein de votre typecript.

Voici les documents indiquant n'est pas directement au niveau du bit dans le gabarit: https://angular.io/guide/template-syntax#template-expressions

+1

'&' est un opérateur au niveau du bit. '&&' est logique ET. –

+0

Je ne sais pas comment j'ai raté ça. Merci de l'avoir attrapé. –