Мне нужно вернуть значение массива по индексу, но после того, как переменная получит индекс, массив ниже возвращает ошибку.
Когда я выбираю, например, «Diminuiu Pouco», мне нужно установить planoCuidadosForm.controls.scorePadraoAlimentar к соответствующему баллу в массиве
компонент:
export class AppComponent {
planoCuidadosForm: FormGroup;
padraoAlimentar: any[] = [
{ Desc: "Mesmo de Sempre", Score: 1 },
{ Desc: "Diminuiu Pouco", Score: 2 },
{ Desc: "Diminuiu Pela Metade", Score: 3 },
{ Desc: "Diminuiu Muito", Score: 4 },
{ Desc: "Quase Nada", Score: 5 }
];
constructor(
private fb: FormBuilder,
) { }
onInit(){
this.createFormPlanos();
}
createFormPlanos() {
this.planoCuidadosForm = this.fb.group({
ProtocoloMedicoId: [null],
padraoAlimentar: [''],
scorePadraoAlimentar: 0
});
}
calcScoreNut() {
if (this.planoCuidadosForm == null) return;
if (this.planoCuidadosForm.get("padraoAlimentar").value !== null) {
let x = this.padraoAlimentar.indexOf(this.planoCuidadosForm.get("padraoAlimentar").value).valueOf();
console.log('Test ', this.padraoAlimentar[x].Score);
this.planoCuidadosForm.controls.scorePadraoAlimentar.setValue(
this.padraoAlimentar[x].Score
);
}
}
}
HTML:
<form class="form-horizontal ml-2 mr-2 mt-2" [formGroup]="planoCuidadosForm" >
<div class="form-row">
<div class="form-group col-md-6">
<label for="padraoalimentar">Padrão Alimentar</label>
</div>
<div class="form-group col-md-3">
<select class="form-control" id="padraoalimentar" formControlName="padraoAlimentar" (click)="calcScoreNut()">
<option value="null"> -- Selecione -- </option>
<option *ngFor="let pad of padraoAlimentar;let op = index" [value]="pad.Desc">{{ pad.Desc }}</option>
</select>
</div>
<div class="form-group col-md-3">
<div class="input-group">
<label for="scorepadraoalimentar">Score: </label>
<input type="number" formControlName="scorePadraoAlimentar" class="form-control" id="scorepadraoalimentar" [value]="planoCuidadosForm.get('scorePadraoAlimentar').value"
[attr.disabled]="true" />
</div>
</div>
</div>
</form>
https://stackblitz.com/edit/angular-vdkwvg