Как добавить метаданные для formControl? - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть массив форм FormGroup;

let forms = [this.form1, this.form2];

Каждая форма имеет несколько элементов управления: FormControl.

Как добавить дополнительные данные в FormControl, например, типэлемент (input, textarea, select)?

Например, у меня есть форма:

export class ProfileEditorComponent {
  profileForm = this.fb.group({
    firstName: [''],
    lastName: [''],
    address: this.fb.group({
      street: [''],
      city: [''],
      state: [''],
      zip: ['']
    }),
  });

Как узнать, что под полем zip должно быть input или select?

Как перебрать profileForm в шаблоне с вложенной формой?

1 Ответ

1 голос
/ 06 ноября 2019

Ответ перед редактированием вопроса

ОБНОВЛЕНИЕ

Следующее называется расширением модуля, как описано здесь или введите здесь описание ссылки

Это позволяет расширять (например, добавлять свойства pr свойства) классы из сторонних модулей

ORIGINAL

У нас было требование иметь валидаторы предупреждений, которые не предусмотрены угловыми. В нашем typings.d.ts файле, который должен находиться в корневом каталоге наших приложений, мы сделали следующее:

declare module '@angular/forms' {

  export interface AbstractControl {
    warnings: ValidationErrors | null;
  }
}

ValidationErrors - наш собственный класс.

Вы можете сделатьчто-то вроде

declare module '@angular/forms' {

  export interface AbstractControl {
    elementType: string; // input, textarea, select
  }
}

При этом у всех ваших AbstractControls в вашем приложении будет свойство elementType.

Вы также можете использовать FormControl вместо AbstractControl

...