我试图在我的页面上显示/隐藏div,其条件基于const enum的使用:
export const enum TipoMensagem {
Sucesso,
Erro
}
这就是我想在我看来写的:
<div [class]="msgInformacao.msgKind === MsgKind.Error ? 'text-danger' : ' text-info'"><strong>{{msgInformacao.info}}</strong></div>
这会导致运行时错误,说明无法访问未定义的属性Error。
如果我将条件包装在控制器方法上,那么一切都很好:
<div [class]="hasError() ? 'text-danger' : ' text-info'"><strong>{{msgInformacao.msg}}</strong></div>
然后,控制器上有一个错误方法,如下所示:
hasError(): boolean {
return this.msgInformacao.msgKind === MsgKind.Error;
}
我想知道的是,是否支持选项A(在视图上使用枚举),如果支持,我需要做什么才能使用它?
由于
路易斯
答案 0 :(得分:2)
不,这不受支持。
您只能访问模板所属的组件或指令的成员和方法。因此,您可以使用this.XXX
访问的所有内容也可以在模板中访问,因此hasError()
可以正常工作并尝试使用类范围之外的任何内容(例如,const enum)。
答案 1 :(得分:2)
如果在组件中使用MsgKind设置变量,则只能使用选项A,以便可以在模板上访问它。
这样的事可能有用:
import { MsgKind } from './MsgKind'
class Component {
MsgKind = MsgKind;
}