J'ai préparé un en utilisant ReactiveForms fourni par angular2/forms. Ce formulaire comporte un tableau de produits:
this.checkoutFormGroup = this.fb.group({
selectedNominee: ['', Validators.required],
selectedBank: ['', Validators.required],
products: productFormGroupArray
});
productFormGroupArray est un tableau d'objets FormGroup. J'ai extrait les contrôles, par exemple, l'objet FormArray en utilisant ceci:
this.checkoutFormGroup.get('products')
J'essaie d'obtenir l'élément dans le tableau products à l'index i
. Comment cela peut-il être fait sans passer en boucle dans le tableau?
Modifier:
J'ai essayé avec la méthode at (index) disponible:
this.checkoutFormGroup.get('products').at(index)
mais cela génère une erreur en tant que:
Property 'at' does not exist on type 'AbstractControl'.
Edit 2: CheckoutLes données et le fonds sont reçus du serveur.
this.checkoutData.products.forEach(product => {
this.fundFormGroupArray.Push(this.fb.group({
investmentAmount: [this.fund.minInvestment, Validators.required],
selectedSubOption: ['', Validators.required],
}))
});
Il suffit de lancer ce contrôle dans un tableau
var arrayControl = this.checkoutFormGroup.get('products') as FormArray;
et toutes ses caractéristiques sont là
var item = arrayControl.at(index);
Un liner en option pour la réponse acceptée actuellement
(<FormArray>this.checkoutFormGroup.get('products')).at(index);
// dans le fichier de composant .ts //
getName(i) {
return this.getControls()[i].value.name;
}
getControls() {
return (<FormArray>this.categoryForm.get('categories')).controls;
}
// sous forme réactive - Fichier de modèle //
<mat-tab-group formArrayName="categories" class="uk-width-2-3" [selectedIndex]="getControls().length">
<mat-tab
*ngFor="let categoryCtrl of getControls(); let i = index"
[formGroupName]="i"
[label]="getName(i)? getName(i) : 'جديد'"
>
</mat-tab>
</mat-tab-group>