Angular2:使用ngIf在组件视图中使用自定义时间

时间:2016-10-06 13:20:28

标签: angular angular2-template

我试图在我的页面上显示/隐藏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(在视图上使用枚举),如果支持,我需要做什么才能使用它?

由于

路易斯

2 个答案:

答案 0 :(得分:2)

不,这不受支持。

您只能访问模板所属的组件或指令的成员和方法。因此,您可以使用this.XXX访问的所有内容也可以在模板中访问,因此hasError()可以正常工作并尝试使用类范围之外的任何内容(例如,const enum)。

答案 1 :(得分:2)

如果在组件中使用MsgKind设置变量,则只能使用选项A,以便可以在模板上访问它。

这样的事可能有用:

import { MsgKind } from './MsgKind'

class Component {
    MsgKind = MsgKind;
}