Как мне сопоставить formControlName
с определенным formArray
элементом?
Я не могу контролировать данные сервера и пытаюсь создать форму с массивом телефонных номеров.
Сама форма визуально не размещает телефоны рядом друг с другом, и я хочу иметь возможность объявить управление вводом телефона так же, как это обычно делается с formGroup.
Ниже приведено следующее:
Контроллер:
const exampleData = {
'name': 'John Doe',
'phones': [
{
'type': 'home',
'number': '5555555'
},
{
'type': 'cell',
'number': '5555555'
}
]
};
this.form = this.fb.group({
name:[],
phones: this.fb.array([
this.fb.group({
type: '',
number: []
}),
this.fb.group({
type: '',
number: []
})
]),
});
this.form.patchValue(exampleData);
Шаблон
<input type="text" formControlName="name">
<!-- This works but I need to loop -->
<div formArrayName="phones">
<div *ngFor="let phone of form.get('phones').controls; let i = index">
<div [formGroupName]="i">
<label>Type: </label><input formControlName="type"/>
<label>Number: </label><input formControlName="number"/>
</div>
</div>
</div>
<!-- How can I point to a phone directly? -->
<input type="text" formControlName="point to type home's number...with helper function or something...">
Хотите узнать, возможно ли это вообще?