Angular 6: добавить группу подформ с помощью .addControl - PullRequest
0 голосов
/ 11 марта 2019

У меня есть форма, которая разбита по компонентам, и поэтому мне нужно использовать .addControl, чтобы заставить форму работать вместе.

Это структура формы на данный момент:

name: ['', [Validators.required, Validators.maxLength(255)]],
address: this.ofb.group({
    addressLineOne: ['', Validators.required],
    addressLineTwo: ['', Validators.required],
    addressLineThree: [''],
    addressPostcode: ['', [Validators.required, OrgValidators.postcodeValidator]]
})

Я преобразовал поля в синтаксис .addControl следующим образом:

this.createOrganisationForm.addControl('name', new FormControl(null, [Validators.required, Validators.maxLength(255)]));
this.createOrganisationForm.addControl('addressLineOne', new FormControl(null, [Validators.required]));
this.createOrganisationForm.addControl('addressLineTwo', new FormControl(null, [Validators.required]));
this.createOrganisationForm.addControl('addressLineThree', new FormControl(null, [Validators.required]));
this.createOrganisationForm.addControl('addressPostcode', new FormControl(null, [Validators.required, OrgValidators.postcodeValidator]));

Однако, похоже, они теряют групповой «адрес». Я попытался добавить адрес в объект так:

 let addressGroup = {
  addressLineOne: ['', Validators.required],
  addressLineTwo: ['', Validators.required],
  addressLineThree: [''],
  addressPostcode: ['', [Validators.required, OrgValidators.postcodeValidator]]
 }

, а затем добавить его следующим образом:

this.createOrganisationForm.addControl('address', addressGroup);

но я получаю ошибку:

нельзя назначить параметру типа 'AbstractControl'.

Как добавить группу элементов управления в родительский элемент управления с помощью метода .addControl.

Спасибо

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

Это потому, что объект addressGroup не является экземпляром класса FormGroup.

const addressGroup =  new FormGroup({
  addressLineOne: ['', Validators.required],
  ....
})
0 голосов
/ 11 марта 2019

Инициализируйте адресную группу с типом FormGroup, как указано ниже:

let addressGroup = {

let addressGroup: FormGroup = new FormGroup({
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...