从字符串ID以打字稿有效枚举值获取/角
我有以下枚举:从字符串ID以打字稿有效枚举值获取/角
export enum Probability {
Certain = 1,
AlmostCertain = 2,
Likely = 3,
Unlikely = 4,
AlmostImpossible = 5,
Impossible = 6,
}
的数字在下拉菜单中得到引用,所以当我检索值我得到“1”,“2”等
我遇到的问题是然后试图使用该值作为“枚举”。
因此,例如:
export function probabilityLabel(probability: Probability): string {
switch (probability) {
case Probability.Certain:
return "Certain";
case Probability.AlmostCertain:
return "Almost Certain";
,然后调用它沿着线的东西: probabilityLabel(this.form.get( '概率')值)//所以基本上通过在 “1”
这不符合。
我怎样才能从“1”得到什么东西匹配时通过?
一些我尝试过的方法... ProbabilityLabel(“1”);
let probability:Probability = Probability [“1”];
console.log(“second attempt”,ProbabilityLabel(probability));
我创建了一个可复制plunkr这里: http://plnkr.co/edit/8sGJeDGL0wmgBU9WxtQ4?p=preview
enum Probability {
Certain = 1,
AlmostCertain = 2,
Likely = 3,
Unlikely = 4,
AlmostImpossible = 5,
Impossible = 6
}
let p:Probability;
p = Probability.Unlikely;
alert(Probability[p]);
enum Probability2 {
Certain,
AlmostCertain,
Likely,
Unlikely,
AlmostImpossible,
Impossible
}
let p2:Probability2;
p2 = Probability.Unlikely;
alert(Probability[p2]);
let s: string = Probability[p2];
alert(s);
let p3: Probability2 = Probability[Probability[s]];
alert(p3);
let p4: Probability2 = [Probability[s]];
alert(p4); // Will be number
见here可以在Typescript playground运行这段代码。
(不幸的是,代码被用某种URL限制截断,但你可以从上面复制/粘贴并运行它在操场)
BTW你并不需要在所有的枚举值的数。第一个将被抵消。因此,某些= 5,将使AlmostCertain 6,可能是7等
如果你P4:Probability2 =概率[S]你会得到一个号码,如果你提醒它
谢谢你。我确实需要数字。它们将成为数据库中的参考ID,因此我需要保留这些参考ID。也如上所述,我从反应形式控件获取id作为字符串,所以我试图从一个数字的字符串版本直到在交换机中匹配的枚举值。 – Simon
'的console.log(“第一次尝试“,ProbabilityLabel(1));'使用数字?如果你展示真实的用例,我想可以给出更详细的答案。 – echonax
我给了一个plunkr与这不工作?字符串值来自与解决问题无关的反应形式,我最终得到一个字符串值。你是说把它转换成数字吗? – Simon
是的,就像'Number(“1”)' – echonax