change - Angular 2: Acceso a datos desde FormArray
ng attr angular 2 (3)
// en el archivo de componentes .ts //
getName(i) {
return this.getControls()[i].value.name;
}
getControls() {
return (<FormArray>this.categoryForm.get(''categories'')).controls;
}
// en forma reactiva - Archivo de plantilla //
<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>
He preparado una de usar ReactiveForms proporcionado por angular2 / forms. Este formulario tiene una matriz de formularios de productos:
this.checkoutFormGroup = this.fb.group({
selectedNominee: ['''', Validators.required],
selectedBank: ['''', Validators.required],
products: productFormGroupArray
});
productFormGroupArray es una matriz de FormGroup Object.I recuperó los controles, es decir, el objeto FormArray usando esto:
this.checkoutFormGroup.get(''products'')
Estoy tratando de obtener el elemento en la matriz de productos en el índice i
. ¿Cómo se puede hacer esto sin hacer un bucle a través de la matriz?
Editar:
Probé con el método (índice) disponible:
this.checkoutFormGroup.get(''products'').at(index)
pero esto está generando un error como:
Property ''at'' does not exist on type ''AbstractControl''.
Edición 2: checkoutData y el fondo se reciben del servidor.
this.checkoutData.products.forEach(product => {
this.fundFormGroupArray.push(this.fb.group({
investmentAmount: [this.fund.minInvestment, Validators.required],
selectedSubOption: ['''', Validators.required],
}))
});
Simplemente lanza ese control a la matriz
var arrayControl = this.checkoutFormGroup.get(''products'') as FormArray;
y todas sus características están ahí
var item = arrayControl.at(index);
Un trazador de líneas como opción a la respuesta aceptada actual
(<FormArray>this.checkoutFormGroup.get(''products'')).at(index);