Я пытаюсь динамически создать вложенный FormArray в моем приложении Angular 6.
У меня есть цитата, в которой есть коллекция элементов цитаты
export class Quote {
quoteId: number;
quoteItems: QuoteItem[]
status: string;
}
export class QuoteItem {
quoteItemId: number;
description: string;
quoteItemDetails: QuoteItemDetail[]
}
export class QuoteItemDetail {
quoteItemDetailId: number;
rate: number;
quantity: number;
total: number;
}
У меня есть форма с объектом Quote, где пользователь может нажать на кнопку, чтобы добавить и удалить один или несколько QuoteItems.
Это мой код, где я инициализирую свою форму:
ngOnInit() {
this.quoteForm = this.fb.group({
status: [''],
quoteItems: this.fb.array([])
});
this.addQuoteItem();
}
И вот как я получаю динамическое c добавление и удаление рабочих:
get quoteItems() {
return this.quoteForm.get('quoteItems') as FormArray;
}
addQuoteItem() {
this.quoteItems.push(this.fb.group({
description: '',
quoteItemDetails: this.fb.array([])
}));
}
removeQuoteV2Item(index) {
this.quoteV2Items.removeAt(index);
}
И мой html:
<div formArrayName="quoteItems">
<div @items *ngFor="let item of quoteItems.controls; let contentIndex=index" [formGroupName]="contentIndex">
<input type="text" formControlName="description">
</div>
</div>
<p>
<a (click)="addQuoteItem()">Add Quote Item</a>
</p>
То, что я пытаюсь сделать, это иметь та же функциональность, но для моего массива QuoteItemDetail. Таким образом, пользователь может добавить один или несколько quoteItems, и в них добавить один или несколько QuoteItemDetails.
Я действительно застрял в первом пункте, я не могу понять, как получить оценщик массива формы, это не работает в качестве примера, так как я не уверен, как передать индекс:
get quoteItemDetails() {
return this.quoteItems.get('quoteItemDetails') as FormArray;
}