Angular2: использовать настраиваемое время в представлении компонентов с помощью ngIf

#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) — нет.