0

在我的 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 的类型吗?

4

3 回答 3

2

userEditFormNgForm这样声明:

@ViewChild("userEditForm") userEditForm: NgForm;

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

于 2017-06-15T19:41:30.037 回答
1

你应该从 @angular/forms 导入 NgForm 并试试这个。

OnClear(userEditForm: NgForm) {
  userEditForm.reset();
 }
于 2017-06-15T19:37:39.233 回答
0

添加导入:

import { NgForm } from "@angular/forms";

ngOnChanges (changes: SimpleChanges) {
    /** add this **/
    form.reset();
    console.log(this.userEditForm);
}
于 2021-12-10T03:51:59.190 回答