我在使用控件和选择框构建动态 angular2 表单时遇到问题, 例如这个 plunker :
<select class="form-control" ngControl="power">
<option *ngFor="#p of powers" [value]="p">{{p}}</option>
</select>
你可以选择一个英雄的力量,并且控件将具有相同的值。但是,如果您按 Change Powers
,所选值将为空,但控件值仍为旧值。我认为这是一个严重的问题,因为当表单显示一件事但实际上它会提交不同的东西时,这是很多错误的来源,有什么方法可以更新控件的内容吗?有 updateValue()
但您必须在所有这些情况下手动设置值。
还有一个类似的情况,当你在表单构建后更新选择框选项时,它会在选择框中显示一个选定的值,而控件值将为空,请问如何处理这个问题?
最佳答案
在 Angular 2 Final (RC5+) 中有用于更新表单值的新 API。 patchValue()
API 方法支持部分表单更新,我们只需要指定部分字段:
this.form.patchValue({id: selected.id})
还有 setValue()
API 方法需要一个包含所有表单字段的对象。如果缺少一个字段,我们将得到一个错误。
关于Angular2更新表单控件值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35579302/