Ошибка компиляции Angular4 при производственной сборке: элементы управления свойствами не существуют для типа AbstractControl

Мой код отлично строится и работает в режиме разработки. Когда я строю для производства, я получаю эту ошибку в этой строке:

        <div *ngFor="let child of form.controls.emailsArray.controls; let i=index">

Форма строится так:

  public form: FormGroup;
  private control: FormArray;
  private emailsModel = { emails: ['','','','','']}  // the model, ready to hold the emails
  private fb : FormBuilder;

  constructor() {}

  ngOnInit() {
    this.fb = new FormBuilder;
        this.form = this.fb.group({
      emailsArray: this.fb.array([])
    });
    this.control = <FormArray>this.form.controls['emailsArray'];
    this.patch();    
  }

  private patch(): void {
    // iterate the object model and extra values, binding them to the controls
    this.emailsModel.emails.forEach((item) => {
      this.control.push(this.patchValues(item));
    })
  }

  private patchValues(item: string): AbstractControl {
    return this.fb.group({
      email: [item, Validators.compose([emailValidator])] 
    })
  }

Итак, как мне сослаться на эти дочерние элементы управления в html?

Примечание: похоже на этот вопрос , за исключением того, что моя ошибка возникает в HTML, а не в машинописном тексте.


person rmcsharry    schedule 27.09.2017    source источник


Ответы (2)


Я не уверен, что это хорошая практика, но изменение HTML на это сработало:

<div *ngFor="let child of form.controls.emailsArray['controls']; let i=index">
person rmcsharry    schedule 27.09.2017
comment
Я сталкивался с этим раньше. Это решение, которое я также использую. - person LLai; 28.09.2017
comment
@LLai Спасибо, что подтвердили, что я не один! :) - person rmcsharry; 28.09.2017

Для меня это решило это:

Изменять

meeting.controls.schedule.controls['scheduleEnd']

to

meeting.controls.schedule['controls'].frequency
person rico    schedule 27.03.2018