угловая проблема 6 итераторов FormGroup / FormControl - PullRequest
0 голосов
/ 01 июля 2018

У меня есть fromGroup и 7 FormControl внутри (имя, адрес, почтовый индекс и т. Д.) Когда страница инициализируется, включается только первый FormControl, а остальные отключаются. Только после того, как пользователь введет свое имя, остальные FormControls должны быть включены. Я хотел бы перебрать все формы управления и включить каждый из них внутри цикла, не набирая все формы управления. Я хотел бы сделать что-то подобное:

for (const field in this.form.controls) { 
   this.form.get(field).enable();
}

или как это:

Object.keys( this.form.controls).forEach(key => {
   this.form.controls[key].enable();
});

Но, к сожалению, другие формы управления никогда не включаются

Есть идеи почему?

спасибо youss

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы должны исключить изменение name формы управления внутри его собственных изменений значения subscription. Потому что это сделает рекурсивный вызов и даст

превышен максимальный размер стека вызовов

ошибка. И также вы не должны снова включать name контроль, потому что это уже enabled.

this.form.get('name').valueChanges.subscribe(inserted => {
      if (inserted.length > 0) { 
        Object.keys(this.form.controls)
        .forEach(key => {
          if(key !== 'name')
          this.form.controls[key].enable()
        });
      }
 });
0 голосов
/ 01 июля 2018

Этот образец работает для меня: stackblitz

Вы должны опубликовать больше деталей кода для нас, чтобы решить вашу проблему.

...