2016-07-14 54 views
1

假定下列模板:Angular2形成比迪映射和打字稿枚举属性为数字

<select id="IdCtrl" class="form-control" required [(ngModel)]="obj.enumProperty"> 
    <option *ngFor="let p of EnumVals" [value]="p.value">{{p.name}}</option> 
</select> 

其中

EnumVals: [{name: string, value: number}] 

enumProperty是一些打字稿enum

现在,双向映射生成的值为string,而不是number。我做错了什么或者这是一个正确的行为?

P.S.我总是可以手动将它投射到number,但我希望在幕后完成。

回答

0

目标是,该值属性里面总是只有字符串。所以,Angular可以将你的'数字'从模型转换为'字符串'(默认情况下只使用toString()),但不允许解析它。不幸。

+0

我很确定这不是*目标*。目标是有一个类型安全的语言,其中字符串不安全。 –

+0

但是为什么你要判断语言(框架不是语言)? 无论如何,您在这里使用2个双向绑定=一个用于ngModel的obj.enumProperty,另一个用于ngFor的EnumVals。 角度变化检测系统只监视与当前绑定(p.value)有关的元素变化,而ngmodel仅监听来自'