2017-08-30 74 views
1

在角是可以使用的模板內打字稿的枚舉標誌?
我得到的「&」位運算符的拒絕。
我懷疑這是不可能的,只是雙重檢查。使用TS枚舉旗幟在角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

混淆似乎來自嘗試在預期邏輯表達式的東西中使用按位表達式。如上所述,模板中不接受'&',但可以創建一個打印腳本方法,以便使用按位運算符並返回一個布爾值。 –

回答

0

正確使用和內模板是邏輯運算符號雙&&。 Bitwise不能直接在模板中使用。

*ngIf="(userDetailsFlags$ | async) && flags.Loaded"應該做的伎倆,但如果你想申請一個按位您可以將組件打字稿內這樣做。

這裏的文檔直接說明按位是不可用的模板:https://angular.io/guide/template-syntax#template-expressions

+1

'&'是一個按位運算符。 '&&'邏輯與。 –

+0

不知道我是如何錯過的。感謝您的支持。 –