角度错误:类型“ void”不能分配给类型“ AbstractControl”

时间:2020-02-18 15:02:26

标签: javascript angular mean

设置FormControl的默认值时出现错误,但它返回如下错误:

错误TS2322:类型“ void”不能分配给类型“ AbstractControl”

这是我的.ts文件:

  profileForm  = new FormGroup({ 
    username   : new FormControl().setValue("a"),
    firstname  : new FormControl().setValue("a"),
    lastname   : new FormControl().setValue("a"),
    email      : new FormControl().setValue("a"),
    password   : new FormControl().setValue("a"),
  }); 

帮我解决这个问题。

2 个答案:

答案 0 :(得分:3)

FormControl.setValue()返回void-表示不返回任何内容。

您正在有效地尝试创建具有以下签名的对象:

{
  username: void,
  firstname: void,
  ...
}

对于构造FormGroup而言,这既无意义又无效。 FormGroup期望在其构造函数中具有以下签名的对象:

{
  [key: string]: FormControl
}

所以更像是:

{
  username: new FormControl(),
  firstname: new FormControl(),
  ...
}

如果要以编程方式访问表单控件,可以执行以下操作:

const formControls = {
  username: new FormControl('a'),
  firstname: new FormControl('a'),
  ...
};

// or this
formControls.username.setValue('a');
formControls.firstname.setValue('a');
// ... etc

profileForm = new FormGroup({
  username: formControls.username,
  firstname: formControls.firstname,
  ...
});

答案 1 :(得分:0)

您可以使用表单构建器:

profileForm: FormGroup;

constructor(private _formBuilder: FormBuilder) {}

ngOnInit() {
        this.profileForm  = this._formBuilder.group({
            username: [{ value: 'a' }],
            ...
          }); 
    }