从字符串ID以打字稿有效枚举值获取/角

从字符串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

+0

'的console.log(“第一次尝试“,ProbabilityLabel(1));'使用数字?如果你展示真实的用例,我想可以给出更详细的答案。 – echonax

+0

我给了一个plunkr与这不工作?字符串值来自与解决问题无关的反应形式,我最终得到一个字符串值。你是说把它转换成数字吗? – Simon

+0

是的,就像'Number(“1”)' – echonax

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]你会得到一个号码,如果你提醒它

+0

谢谢你。我确实需要数字。它们将成为数据库中的参考ID,因此我需要保留这些参考ID。也如上所述,我从反应形式控件获取id作为字符串,所以我试图从一个数字的字符串版本直到在交换机中匹配的枚举值。 – Simon