Я работаю над угловым приложением, и у меня есть форма, в которой есть основной вопрос с ответом «Да» / «Нет» и основанный на выборе пользователя, если пользователь выбирает «Да», тогда под вопросы с радиокнопка и ввод текста, включается, и пользователь может вводить значения.Поэтому на ngInit я подписываюсь на изменения в значении основного Вопроса, чтобы включить элементы управления.
Код выглядит следующим образом:
<div>
<div class="form-field" [ngClass]="{'ng-invalid': submitted && formModel.hasError('required','Q4')}">
<p>4. Are you an entity that is an issuer of securities registered ?</p>
<div class="radio" *ngFor="let answer of answers">
<label>
<input type="radio" name="Q4" formControlName="Q4" ngModel [value]="answer"> {{answer}}
</label>
</div>
</div>
<div class="form-field" [ngClass]="{'ng-invalid': submitted && (formModel.hasError('required','Q4a')
|| formModel.hasError('invalidSECIndexKeyError','Q4a'))}" >
<p>4a. The relevant SEC Central Index Key number for that party:</p>
<div class="number">
<input type="text" formControlName="Q4a" maxlength="10"
(keypress)="validateTheSECKeyPress($event)" required />
</div>
<div class="field-errors" *ngIf="submitted && formModel.get('Q4a').invalid && formModel.get('Q4a').errors">
<ng-container *ngFor="let error of formModel.get('Q4a').errors | objectEntries">
<li>
{{ getValidationErrorMessage(error.key, error.value) }}
</li>
</ng-container>
</div>
</div>
<div class="form-field" [ngClass]="{'ng-invalid': submitted && formModel.hasError('required','Q4b')}">
<p>4b. Whether an appropriate committee of that counterparty’s board of directors
(or equivalent body) has reviewed and approved the decision to enter into swaps.</p>
<div class="radio" *ngFor="let answer of answers">
<label>
<input type="radio" name="Q4b" formControlName="Q4b"
ngModel [value]="answer"> {{answer}}
</label>
</div>
</div>
</div>
и в ngInit у меня есть код ниже:
ngOnInit() {
this._formSubscriptions = new Rx.Subscription();
let Q4sub = this.formModel.get('Q4').valueChanges.subscribe(
(val) => {
let ctrl1 = this.formModel.get('Q4a');
let ctrl2 = this.formModel.get('Q4b');
if (val === 'Yes') {
ctrl1.enable();
ctrl2.enable();
} else {
ctrl1.disable();
ctrl1.reset();
ctrl2.disable();
ctrl2.reset();
}
}
);
this._formSubscriptions.add(Q4sub);
}
но я вижу, что форма предварительно загружается сзначения из базы данных и вопрос Q4 имеют заполненное значение «Нет», и когда пользователь пытается изменить значение на «да», другие элементы управления получают присвоенное им «неопределенное» значение, и из-за этого оба элемента управления остаются отключенными.это происходит случайно для нескольких записей.Но с другими записями все в порядке.
Как мне обработать эти случайные "неопределенные" контрольные значения?