export enum AgentStatus {
available =1 ,
busy = 2,
away = 3,
offline = 0
}
如何將字符串轉換爲TypeScript中的枚舉?
var value = AgentStatus["offline"]; // so value is now 0
// You can also use this, which only gives IDE hints, no runtime benefit
var value: AgentStatus = AgentStatus["offline"];
如何獲取TypeScript枚舉類型的所有值?
var options : string[] = Object.keys(AgentStatus);
// The options list has the numeric keys, followed by the string keys
// So, the first half is numeric, the 2nd half is strings
options = options.slice(options.length/2);
如果您在Angular2模板寫:
{{AgentStatus[myValue]}}
它會失敗,因爲它並沒有獲得進口類型(它被用AngularJS後執行)。
要使其工作,你的組件需要有枚舉類型/對象的引用,是這樣的:
export class MyComponent {
// allows you to use AgentStatus in template
AgentStatus = AgentStatus;
myValue : AgentStatus;
// ...
}
例如:
import { Component } from '@angular/core';
enum AgentStatus {
available =1 ,
busy = 2,
away = 3,
offline = 0
}
例如
@Component({
selector: 'my-app',
template: `
<h1>Choose Value</h1>
<select (change)="parseValue($event.target.value)">
<option>--select--</option>
<option *ngFor="let name of options"
[value]="name">{{name}}</option>
</select>
<h1 [hidden]="myValue == null">
You entered {{AgentStatus[myValue]}}
<br>
You are {{isOffline ? "offline" : "not offline"}}.
</h1>`
})
export class AppComponent {
options : string[];
myValue: AgentStatus;
AgentStatus : typeof AgentStatus = AgentStatus;
isOffline : bool;
ngOnInit() {
var x = AgentStatus;
var options = Object.keys(AgentStatus);
this.options = options.slice(options.length/2);
}
parseValue(value : string) {
this.myValue = AgentStatus[value];
this.isOffline = this.myValue == AgentStatus.offline;
}
}
所以枚舉不能用於這樣的目的,好吧...然而,我想指定顯示類型在視圖組件中,如下所示: 。如果displayType是字符串類型,我怎麼能應用它在HTML模板? –
vicgoyso
你將如何定義一個枚舉有字符串 – Aravind
不,現在考慮只是現在使用一個字符串,因爲不能使用枚舉。我想知道如何將值「小」傳遞給我的html模板? – vicgoyso