Управляющее значение получает неопределенное значение - PullRequest
0 голосов
/ 24 октября 2018

Я работаю над угловым приложением, и у меня есть форма, в которой есть основной вопрос с ответом «Да» / «Нет» и основанный на выборе пользователя, если пользователь выбирает «Да», тогда под вопросы с радиокнопка и ввод текста, включается, и пользователь может вводить значения.Поэтому на 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 имеют заполненное значение «Нет», и когда пользователь пытается изменить значение на «да», другие элементы управления получают присвоенное им «неопределенное» значение, и из-за этого оба элемента управления остаются отключенными.это происходит случайно для нескольких записей.Но с другими записями все в порядке.

Как мне обработать эти случайные "неопределенные" контрольные значения?

1 Ответ

0 голосов
/ 24 октября 2018

Я нашел решение, но я не уверен, является ли хорошей практикой проверять неопределенное значение, как показано ниже

if(val === undefined)
{
}

, или лучше использовать if (! Val), который проверял неопределенность?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...