Использование setControl во вложенной реактивной форме - PullRequest
0 голосов
/ 25 мая 2018

Я хотел бы знать, что мне нужно сделать, чтобы использовать "setControl" и "get" в реактивной форме, когда у меня есть массив внутри другой группы formBuilder.Например:

this.formulario = this.formBuilder.group({
  title: [this.racPessoa.title, [Validators.required]],
  description: [this.racPessoa.description, [Validators.required]],
  person: this.formBuilder.group({
    idPerson:[this.racPessoa.person.idPerson],
    name:[this.racPessoa.person.nome],
    personDocument: this.formBuilder.array([])
  }),
});

В случае выше, если я хочу обработать с заголовком ", я могу написать:

this.formulario.setControl('title', something);
this.formulario.get('title');

Но я не знаю, как написать обапредложения выше, когда я хочу обработать «personDocument», который находится внутри человека

Я пытался использовать:

this.formulario.setControl('person.personDocument', something);
this.formulario.get('person.personDocument')

Но это не работает.

1 Ответ

0 голосов
/ 25 мая 2018
Метод

FormGroup setControl не поддерживает вложенные структуры управления формами, он просто обнаруживает и устанавливает управление формой на текущем слое, см. setControl и registerControl .

В вашем случае this.formulario.setControl('person.personDocument', something); просто добавит новый элемент управления формы ( клавиша person.personDocument) к вашему текущему слою(вы можете подтвердить это с помощью элементов управления вашей группы).

this.formulario = this.formBuilder.group({
  title: [this.racPessoa.title, [Validators.required]],
  description: [this.racPessoa.description, [Validators.required]],
  person: this.formBuilder.group({
    idPerson:[this.racPessoa.person.idPerson],
    name:[this.racPessoa.person.nome],
    personDocument: this.formBuilder.array([])
  }),
  'person.personDocument': something     // newly added form control
});

Таким образом, вам нужно будет добавить элемент управления формы на конкретный слой, например:

(this.formulario.get('person') as FormGroup).setControl('personDocument', new FormControl('aaa'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...