Ошибка при переключении имени группы - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть следующая форма:

currentLang: string = "en-Gb";

this.myForm = new FormGroup({
    Languages: new FormGroup({
        en-Gb: new FormGroup({
            first: new FormControl('Nancy', Validators.minLength(2)),
            last: new FormControl('Drew', Validators.required)
        }),
        de-De: new FormGroup({
            first: new FormControl('Nancy', Validators.minLength(2)),
            last: new FormControl('Drew', Validators.required)
        }),
    })
});

switchLang(newLang) {
    this.currentLang = newLang;
}

И шаблон кода здесь:

<form [formGroup]="myForm" novalidate (ngSubmit)="submit(myForm)" class="generalForm">

    <div formGroupName="Languages">
        <ol formGroupName="{{currentLang}}">
            <li>
                <label>Firstname:</label>
                <input id="first" type="text" formControlName="first">
            </li>
            <li>
                <label>Lastname:</label>
                <input id="last" type="text" formControlName="last">
            </li>
        </ol>
    </div>

</form>

<button (click)="switchLang('de-De')">Switch to German</button>

Но когда я нажимаю кнопку «Перейти к немецкому языку», мои поля все еще основаны на значениях «en-Gb». Как я могу заставить эти поля перейти на немецкий режим? При переключении языка я ожидал, что поля станут пустыми, чтобы я мог заполнить поля для немецкого представления.

1 Ответ

0 голосов
/ 25 апреля 2018

В конце концов нашел ответ на этот пост = Angular - изменение значения formGroupName не обновляет форму

Кажется, что в тот момент, когда вы каким-либо образом делаете имя группы динамичным, вызатем нужно изменить поля, чтобы они были специфичны для этого объекта (что было бы не так, если бы он был статическим).В моем случае мне пришлось изменить поля на это:

<input id="first" type="text" [formControl]="myForm.controls['Languages'].controls[currentLang].controls['first']">
<input id="first" type="text" [formControl]="myForm.controls['Languages'].controls[currentLang].controls['last']">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...