2017-08-30 6 views
1

Angularでは、テンプレート内でTypeScriptのEnum Flagsを使用できますか?
"&"のビット演算子で拒否されています。
私はそれが可能ではないと思う、ちょうど二重チェック。TS Enumフラグを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 

更新: 代わりに "&" の "& &" を使用してについてコメント皆に、this document firstをお読みください。
私は両者の違いを十分に知っています。

+0

あなたがあなたの代わりに '' &&使用すべきではありませんか? –

+1

Angularの '* ngIf'では、その中に' boolean'値を渡す必要があります。したがって、この式でビット単位の演算を適用することはできません。私は、テンプレートエンジンが '&'構文を認識できないと思います。 –

+0

混乱は、論理式を期待するものでビット単位の表現を使用しようとしているように思われる。私が言及したように、 '&'はテンプレートでは受け入れられませんが、ビットワイズ演算子を使用してブール値を返すために、typescriptメソッドを作成することができます。 –

答えて

0

テンプレート内でANDを正しく使用するには、論理演算子のダブルアンパサンド&&が必要です。ビットワイズはテンプレート内で直接使用することはできません。

*ngIf="(userDetailsFlags$ | async) && flags.Loaded"このトリックを行う必要がありますが、ビット単位で適用する場合は、コンポーネントのタイスクリプト内で行うことができます。ここで

は、直接ビット単位を述べドキュメントのテンプレートでは使用できません:https://angular.io/guide/template-syntax#template-expressions

+1

'&'はビット単位の演算子です。 '&&'は論理ANDです。 –

+0

どのように私はそれを逃したか分かりません。それをキャッチするためにありがとう。 –

関連する問題