Angular MaterializeCSS FormArray Selector - PullRequest
       17

Angular MaterializeCSS FormArray Selector

0 голосов
/ 27 сентября 2019

У меня проблемы с формой, которая работает.

Я использую MaterializeCSS с Angular и для того, чтобы убедиться, что select будет правильно инициирован, я использую следующий метод:

ngAfterViewInit() {
   const selArray = this.select.toArray();
   selArray.forEach(el => {
      M.FormSelect.init(el.nativeElement);
   });
}

Это работает нормально, моя проблема в том, что я использую FormArray , и когда я динамически создаю новый FormControl, select не работает.Это как будто не инициализировано.Я добавил код выше в моем методе addResident(), и он не работает, но если мне нужно добавить снова, он работает.

Вот видео об ошибке: https://youtu.be/v1CHkmJtzCo

Вот код:

@ViewChildren('select') select: QueryList<ElementRef>;

ngAfterViewInit() {
        const selArray = this.select.toArray();
        selArray.forEach(el => {
            M.FormSelect.init(el.nativeElement);
        });
        const dpArray = this.datePicker.toArray();
        dpArray.forEach(element => {
            M.Datepicker.init(element.nativeElement);
        });
    }
addResident() {
   (this.hostForm.get('residents') as FormArray).push(
       new FormGroup({
           firstName: new FormControl(''),
           lastName: new FormControl(''),
           birthDate: new FormControl(''),
           action: new FormControl('Insert'),
           residentID: new FormControl(0),
           relationship: new FormControl('')
       })
   );
   const selArray = this.select.toArray();
   selArray.forEach(el => {
       M.FormSelect.init(el.nativeElement);
   });
}

1 Ответ

1 голос
/ 27 сентября 2019

Я бы предложил использовать Угловой материал , чтобы избежать проблем с MaterializeCSS.

https://material.angular.io/

Компоненты дизайна материала для угловых

Угловой материал: Форма

Угловой материал: Поле формы

Посмотрите на форму Примеры на местах :

<div class="example-container">
  <mat-form-field>
    <input matInput placeholder="Input">
  </mat-form-field>

  <mat-form-field>
    <textarea matInput placeholder="Textarea"></textarea>
  </mat-form-field>

  <mat-form-field>
    <mat-select placeholder="Select">
      <mat-option value="option">Option</mat-option>
    </mat-select>
  </mat-form-field>
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...