Angular 2 FormControl.reset()不起作用,但.resetForm()可以(但是打字稿错误)

时间:2017-06-15 19:29:52

标签: forms angular angular2-forms angular-reactive-forms

在我的Angular 2表格中,我有以下打字稿:

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的输入法?

2 个答案:

答案 0 :(得分:2)

userEditForm声称为NgForm,如下所示:

@ViewChild("userEditForm") userEditForm: NgForm;

现在您可以访问.resetForm()方法。

答案 1 :(得分:1)

您应该从@ angular / forms导入NgForm并尝试此操作。

OnClear(userEditForm: NgForm) {
  userEditForm.reset();
 }