#angular #angular2-template
#angular #angular2-шаблон
Вопрос:
Я пытаюсь показать / скрыть div на своей странице, где условие основано на использовании постоянного перечисления:
export const enum TipoMensagem {
Sucesso,
Erro
}
И это то, что я хотел бы написать в своем представлении:
<div [class]="msgInformacao.msgKind === MsgKind.Error ? 'text-danger' : ' text-info'"><strong>{{msgInformacao.info}}</strong></div>
Это приводит к ошибке времени выполнения, в которой говорится, что невозможно получить доступ к свойству Ошибка undefined .
Если я перенесу условие в метод контроллера, все получится отлично:
<div [class]="hasError() ? 'text-danger' : ' text-info'"><strong>{{msgInformacao.msg}}</strong></div>
И затем, на контроллере есть метод ошибки, который выглядит следующим образом:
hasError(): boolean {
return this.msgInformacao.msgKind === MsgKind.Error;
}
Что я хотел бы знать, поддерживается ли опция A (с использованием перечисления в представлении), и если да, то что мне нужно сделать, чтобы ее использовать?
Спасибо
Luis
Ответ №1:
Вы можете использовать опцию A, только если вы установили переменную в компоненте с помощью MsgKind, чтобы к ней можно было получить доступ в шаблоне.
Что-то вроде этого может сработать:
import { MsgKind } from './MsgKind'
class Component {
MsgKind = MsgKind;
}
Ответ №2:
Нет, это не поддерживается.
Вы можете получить доступ только к элементам и методам компонента или директивы, к которым принадлежит шаблон. Таким образом, все, к чему вы можете получить доступ, this.XXX
также доступно в шаблоне, следовательно hasError()
, работает, а попытка использовать что-либо за пределами вашего класса (например, const enum) — нет.