2016-10-06 9 views
0

Ich versuche, ein div auf meiner Seite zu zeigen/verstecken verwenden, bei denen die Bedingung Basis auf der Verwendung eines konst Enum ist:Angular2: custom mal in Komponentenansicht mit ngIf

export const enum TipoMensagem { 
    Sucesso, 
    Erro 
} 

Und das ist, was ich möchte auf meiner Ansicht schreiben:

<div [class]="msgInformacao.msgKind === MsgKind.Error ? 'text-danger' : ' text-info'"><strong>{{msgInformacao.info}}</strong></div> 

Dies führt zu einer Laufzeitfehlermeldung, dass es nicht möglich ist Eigentum Fehler undefinierter zuzugreifen.

Wenn ich den Zustand auf einem Controller-Methode wickeln, workds alles sehr gut funktioniert:

<div [class]="hasError() ? 'text-danger' : ' text-info'"><strong>{{msgInformacao.msg}}</strong></div> 

Und dann gibt es ein Fehler-Methode auf dem Controller, der wie folgt aussieht:

hasError(): boolean { 
    return this.msgInformacao.msgKind === MsgKind.Error; 
} 

Was ich Ich würde gerne wissen, ob Option A (mit der Enumeration in der Ansicht) unterstützt wird und wenn ja, was muss ich tun, um sie zu verwenden?

Dank

Luis

Antwort

2

Sie können Option A nur verwenden, wenn Sie eine Variable in der Komponente mit MsgKind festlegen, sodass auf die Vorlage zugegriffen werden kann.

So etwas wie dies funktionieren könnte:

import { MsgKind } from './MsgKind' 

class Component { 
    MsgKind = MsgKind; 
} 
2

Nein, das nicht unterstützt wird.

Sie können nur auf Mitglieder und Methoden der Komponente oder Richtlinie zugreifen, zu der die Vorlage gehört. So ist alles, auf das Sie mit this.XXX zugreifen können, auch in der Vorlage zugänglich, daher hasError() funktioniert und versucht, alles außerhalb Ihres Klassenbereichs (zB eine Const enum) nicht zu verwenden.

Verwandte Themen