角2 FormControl.reset()不工作,但.resetForm()做(但打字稿错误)
问题描述:
在我的角2的形式,我有以下打字稿:角2 FormControl.reset()不工作,但.resetForm()做(但打字稿错误)
export class UserEditComponent implements OnChanges {
@Input() userModel: IUserModel;
@Output() onSave: EventEmitter<IUserModel> = new EventEmitter<IUserModel>();
@ViewChild("userEditForm") userEditForm: FormControl;
private userNameIsValid = true;
constructor(private httpService: HttpService) {
}
ngOnChanges (changes: SimpleChanges) {
this.userEditForm.resetForm();
console.log(this.userEditForm);
}
....
}
和HTML模板:
<form class="form-horizontal" #userEditForm="ngForm" (ngSubmit)="onSaveUser()" novalidate>
....
</form>
我试过使用.reset()函数,但它什么也没做。 .resetForm实际上将表单的_submitted属性从true重置为false,但是,它会给我一个TypeScript错误Property resetForm does not exist on type FormControl
。
首先,resetForm是一个有效的实际功能吗?我似乎无法找到任何文档...但它的工作原理和.reset()不。
其次,我该如何摆脱这种TypeScript错误?我需要更新Angular 2的类型吗?
答
您应该从@ angular/forms导入NgForm并尝试此操作。
OnClear(userEditForm: NgForm) {
userEditForm.reset();
}
+0
这样做!我应该使用类型NgForm而不是FormControl。顺便说一下,NgForm中有一个重置表单。 – Scottie
https://angular.io/api/forms/FormControl没有'resetForm',如果你摆脱了那个,那么typescript错误将会消失 – Huangism
声明'userEditForm'为[**'NgForm' ** ](https://angular.io/api/forms/NgForm)像这样:'ViewChild(“userEditForm”)userEditForm:NgForm;',所以你可以访问'.resetForm()'方法。 – developer033
@ developer033这是我错过了。完美工作! – Scottie