Angular Реактивные формы - в раскрывающемся списке не отображается выбранное значение - PullRequest
0 голосов
/ 08 мая 2020

Я создаю реактивную форму с помощью Angular 9, у меня есть раскрывающийся список, например:

<form [formGroup]="registerForm" (ngSubmit)="onSubmit()">

    ...

    <div class="form-group">
        <label class="small mb-1" for="isSigningUpFor">I'm signing up for</label>
        <select class="form-control py-4" id="isSigningUpFor"
            formControlName="signingUpFor" (change)="changeSigningUpFor($event)">
            <option value="Please select..." disabled selected>-- Select --</option>
            <option *ngFor="let opt of signingUpForOptions" [value]="opt.value"
                [selected]="(opt.isSelected == true)">{{ opt.text }} ({{ opt.isSelected }})
            </option>
        </select>

Вот соответствующий код из компонента:

registerForm = this.fb.group(
    {
        // other fields here
        signingUpFor: ['']
    },
);

signingUpForOptions = [
    {
        text: 'My Family',
        value: '1',
        isSelected: false
    },
    {
        text: 'My Sports Team',
        value: '2',
        isSelected: false
    },
    {
        text: 'The Lads',
        value: '3',
        isSelected: false
    }
];

changeSigningUpFor(e: any) {

    var thisValue = e.target.value;

    this.signingUpForOptions.forEach(x => {
        if (x.value == thisValue) {
            x.isSelected = true;
        } else {
            x.isSelected = false;
        }
    });

    this.registerForm.patchValue({
        signingUpFor: thisValue
    });
}

Выпадающий список отображается нормально и показывает параметры. Когда я выбираю один, changeSigningUpFor работает, как ожидалось, исправляя новое значение и соответствующим образом устанавливая флаги isSelected. Я просто не вижу выбранный параметр в пользовательском интерфейсе, как показано ниже:

Gif showing selected value being set correctly, but nothing on the UI

Результат будет таким же, если я удалю onChange вызов функции (ie выбранное значение не отображается). Удаление opt.isSelected == true тоже не решает проблему.

Я не получаю никаких ошибок в консоли. Я чувствую себя здесь идиотом, это должно быть базовое c, но я не привык работать с формами таким образом, что я делаю не так?

Спасибо

1 Ответ

1 голос
/ 08 мая 2020

Вот рабочий пример. Это может быть ваш CSS, проверьте элемент, чтобы увидеть, не влияют ли на что-нибудь цвета или видимость. Также проверьте, правильно ли импортирован ReactiveForms и правильно ли вы загрузили его в свой компонент.

https://stackblitz.com/edit/angular-ivy-9cl8gt?embed=1&file=src / app / app.component.ts

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