Angular Ошибка: тип 'void' нельзя назначить типу 'AbstractControl' - PullRequest
1 голос
/ 18 февраля 2020

Я получил ошибку при установке значения по умолчанию моего 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 ]

3 голосов
/ 18 февраля 2020

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,
  ...
});
0 голосов
/ 18 февраля 2020

Вы можете использовать конструктор форм:

profileForm: FormGroup;

constructor(private _formBuilder: FormBuilder) {}

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