【问题标题】:Non-string values from form controls in Angular2Angular2中表单控件的非字符串值
【发布时间】:2016-04-20 20:28:52
【问题描述】:

在 Angular2 中,是否有一种简洁的方法可以将表单控件的值作为字符串以外的其他内容来处理,例如有一个带有选项 (bool) true(bool) false<select>

目前我正在使用感觉不太优雅的解决方案:

<select (change)="model.published = !!$event.target.value">
    <option value="">No</option>
    <option value="1">Yes</option>
</select>

<select (change)="model.type = $event.target.value * 1">
    <option value="1">My value is (int) 1</option>
    <option value="2">My value is (int) 2</option>
</select>

我在示例中使用&lt;select&gt;s,但我也对其他表单控件感兴趣。

This question 被建议为重复,但我不认为这是一个,因为我不是

  1. 只对精选感兴趣
  2. 尝试动态生成选项

【问题讨论】:

标签: javascript angular angular2-forms


【解决方案1】:

这是当前 Angular 版本https://github.com/angular/angular/issues/2551中的一个已知限制

【讨论】:

    【解决方案2】:

    是的,只需将[(ngModel)]="model.published" 添加到选择中,它将设置&lt;option&gt; 选定的value 属性,如果您在&lt;option&gt; 中添加一个对象,如下所示:&lt;option value="{{object}}"&gt; 您将设置一个对象,它不一定是字符串。

    【讨论】:

    • 但是由于我在对象或数组中没有可能的值,这将如何工作?
    • &lt;option value="{{false}}"&gt;No&lt;/option&gt; &lt;option value="{{true}}"&gt;Yes&lt;/option&gt;,但对于布尔值,我认为你不必使用 {{}} 如果你将选择绑定到布尔属性,它们应该转换,只需使用:&lt;option value="false"&gt;No&lt;/option&gt;@987654329 @
    • 这似乎不起作用。这些值仍然作为字符串进入模型。
    猜你喜欢
    • 1970-01-01
    • 2016-06-05
    • 2017-07-09
    • 2017-11-03
    • 2016-07-13
    • 2017-02-22
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多