Können wir Enums in einer Angular2-Ansichtsvorlage verwenden?
<div class="Dropdown" dropdownType="instrument"></div>
Übergibt die Zeichenfolge als Eingabe:
enum DropdownType {
instrument,
account,
currency
}
@Component({
selector: '[.Dropdown]',
})
export class Dropdown {
@Input() public set dropdownType(value: any) {
console.log(value);
};
}
Aber wie übergebe ich eine Enum-Konfiguration? Ich möchte so etwas in der Vorlage:
<div class="Dropdown" dropdownType="DropdownType.instrument"></div>
Was wäre die beste Vorgehensweise?
Bearbeitet: Beispiel erstellt:
import {bootstrap} from 'angular2/platform/browser';
import {Component, View, Input} from 'angular2/core';
export enum DropdownType {
instrument = 0,
account = 1,
currency = 2
}
@Component({selector: '[.Dropdown]',})
@View({template: ''})
export class Dropdown {
public dropdownTypes = DropdownType;
@Input() public set dropdownType(value: any) {console.log(`-- dropdownType: ${value}`);};
constructor() {console.log('-- Dropdown ready --');}
}
@Component({ selector: 'header' })
@View({ template: '<div class="Dropdown" dropdownType="dropdownTypes.instrument"> </div>', directives: [Dropdown] })
class Header {}
@Component({ selector: 'my-app' })
@View({ template: '<header></header>', directives: [Header] })
class Tester {}
bootstrap(Tester);
enums
angular
angular2-template
McLac
quelle
quelle
Antworten:
Erstellen Sie eine Eigenschaft für Ihre Aufzählung in der übergeordneten Komponente Ihrer Komponentenklasse, weisen Sie ihr die Aufzählung zu und verweisen Sie dann auf diese Eigenschaft in Ihrer Vorlage.
Auf diese Weise können Sie die Aufzählung wie erwartet in Ihrer Vorlage auflisten.
quelle
dropdownType
die Vorlage an beiden Enden eckige Klammern haben sollte (wie so :),[dropdownType]
da es sich um eine Variable und nicht um Text handelt.Erstellen Sie eine Aufzählung
Erstellen Sie Ihre Komponente, und stellen Sie sicher, dass Ihre Aufzählungsliste den Typ enthält
Erstellen Sie Ihre Ansicht
quelle
Wenn Sie den Namen Enum erhalten möchten:
dann in der Komponentendatei
in Vorlage
quelle
Vielleicht musst du das nicht tun.
Zum Beispiel in Numeric Enum:
In der HTML-Vorlage:
Ergebnis:
dropdownType == DropdownType.account
oder String Enum:
Ergebnis:
dropdownType == DropdownType.currency
Wenn Sie den Namen Enum erhalten möchten:
quelle