Bisakah kita menggunakan enum dalam template tampilan angular2?
<div class="Dropdown" dropdownType="instrument"></div>
meneruskan string sebagai input:
enum DropdownType {
instrument,
account,
currency
}
@Component({
selector: '[.Dropdown]',
})
export class Dropdown {
@Input() public set dropdownType(value: any) {
console.log(value);
};
}
Tetapi bagaimana cara melewatkan konfigurasi enum? Saya ingin sesuatu seperti ini di template:
<div class="Dropdown" dropdownType="DropdownType.instrument"></div>
Apa praktik terbaik?
Diedit: Membuat contoh:
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
sumber
sumber
Jawaban:
Buat properti untuk enum Anda pada komponen induk ke kelas komponen Anda dan tetapkan enum ke sana, lalu referensikan properti itu di template Anda.
Ini memungkinkan Anda untuk menghitung enumerasi seperti yang diharapkan dalam template Anda.
sumber
dropdownType
dalam template harus ada tanda kurung siku di kedua ujungnya (seperti :)[dropdownType]
karena ini membutuhkan var dan bukan teks.Buat enum
Buat komponen Anda, pastikan daftar enum Anda memiliki tipe
Ciptakan tampilan Anda
sumber
Jika Anda ingin mendapatkan nama Enum:
lalu di file komponen
dalam template
sumber
Mungkin Anda tidak perlu melakukan ini.
Misalnya, di Enum Numerik:
Dalam Template HTML:
hasil:
dropdownType == DropdownType.account
atau String Enum:
hasil:
dropdownType == DropdownType.currency
Jika Anda ingin mendapatkan nama Enum:
sumber