Я посмотрел на предоставленный вами пример стека-блица и предлагаю следующее, хотя есть и другие способы обработки элементов управления, например наличие массивов элементов управления для динамических данных, но поскольку я не знаю, чтоВаш сценарий придерживается предположения, что у вас есть 4 шага, и вы хотите, чтобы их значения хранились в элементе управления формы.
- Создайте
FormGroup
с ключами, которые вы пытаетесь зациклить (это может бытьсделано также динамически в зависимости от ваших предпочтений)
formGroupObj = new FormGroup({
DEV: new FormControl(),
TEST: new FormControl(),
UAT: new FormControl(),
PROD: new FormControl()
});
- Теперь в вашем файле
component.html
вы можете отобразить степперы на их собственный FormControl
объект следующим образом
<button mat-raised-button (click)="isLinear = !isLinear" id="toggle-linear">
{{!isLinear ? 'Enable linear mode' : 'Disable linear mode'}}
</button>
<mat-horizontal-stepper lablePosition="bottom" [linear]="isLinear" #stepper>
<mat-step *ngFor="let env of environment" [formGroup]="formGroupObj">
<ng-template matStepLabel>{{env.label}}</ng-template>
<mat-form-field>
<mat-label>Answer</mat-label>
<input matInput [formControlName]="env.label">
</mat-form-field>
<div>
<button mat-button matStepperNext (click)="printControl()">Next</button>
</div>
</mat-step>
</mat-horizontal-stepper>
- А следующий фрагмент кода дает вам представление о том, как получить доступ к этим управляющим значениям.Если вы точно реализуете то, что видите здесь, вы увидите прогресс заполнения группы форм соответствующими данными при нажатии «Далее».
printControl() {
this.environment.forEach(item=>{
let formVal = this.formGroupObj.controls[item.label].value;
console.log('value for control ' + item.label + ' is: '+ formVal);
});
}