2017-08-30 47 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

不知道我是如何错过的。感谢您的支持。 –