【发布时间】:2017-10-11 19:32:52
【问题描述】:
在 Angular 4 应用程序中,我有一个模板驱动的表单,其中的控件绑定到我的组件中的值。当表单输入更改时,绑定到输入的对象立即更改(双向绑定)。单击取消按钮时,我想撤消对绑定对象的更改。这允许用户更改值,然后改变主意并取消更改。
https://plnkr.co/edit/RnnPwtHZY0qTN1H6er0z?p=preview
上面的 plunker 有这样一个表单,带有一个绑定字段来读取 hero.name
<h2>{{hero.name}} details!</h2>
绑定到英雄对象的输入。
<form #myForm="ngForm" (ngSubmit)="save(myForm)">
<div class="form-group">
<label>name: </label>
<input name="heroName" [(ngModel)]="hero.name" placeholder="name" />
</div>
<button (click)="cancel(myForm)">Cancel</button>
<button type="submit">Save</button>
</form>
取消按钮调用 ngForm 的 resetForm() 方法。
cancel(myForm){
myForm.resetForm();
}
重现步骤
- 更改英雄名称;立即观察 h2 的变化,证明绑定的对象也发生了变化
- 点击取消;观察名称被清除并且 h2 更改,因为 hero.name 现在为空
我希望取消按钮可以将 hero.name 改回原来的值。这是 resetForm() 应该如何工作的吗?有什么不同的方法吗?
【问题讨论】:
-
不要编辑你的真实对象。克隆它。
标签: javascript angular typescript