Угловая форма: есть ли способ установить параметры по умолчанию для всех входных данных

#angular #angular-material #angular-formly #ngx-formly

#угловая #угловой-материал #угловато-форменный #ngx-formly

Вопрос:

У меня есть формальная форма со многими mat-inputs (да, я использую Материал) внутри. Я хочу, чтобы у каждого из них была appearance=outline причина, по которой я могу поместить ее внутрь templateOptions каждого ввода. Но это не СУХО. Есть ли способ установить значение по умолчанию appearance для каждого mat-input из них в моем приложении и не указывать его в каждом входном описании?

UPD. Я использую компонент formly form следующим образом

 <formly-form [form]="form" [fields]="fieldsDescription"></formly-form>
 

form генерируется с помощью cycle ( fieldsDescription перебора по массиву) и angular form builder. fieldsDescription загружается из серверной части. Прямо сейчас я ввожу appearance=outline каждый ввод. Так fieldsDescription что это массив объектов, подобных следующему

 {
    "key": "field_key",
    "type": "input",
    "templateOptions": {
        "label": "A label",
        "appearance": "outline",
        "placeholder": "",
        "required": true
    }
}
 

Комментарии:

1. Если вы хотите, вы можете использовать MAT_FORM_FIELD_DEFAULT_OPTIONS поставщика, см. docs: material.angular.io/components/form-field/overview

Ответ №1:

почему бы не использовать в качестве поставщика MAT_FORM_FIELD_DEFAULT_OPTIONS { внешний вид: ‘outline’ }? Я полагаю, вы хотите, чтобы все ваши вводные данные отображались в общих чертах. В вашем модуле

   providers: [
    { provide: MAT_FORM_FIELD_DEFAULT_OPTIONS, useValue: { appearance: 'outline' } },
  ]
 

Ответ №2:

почему бы не использовать внутренний шаблон <mat-form-field appearance="outline"> ? предполагая, что вы используете ngFor там.

le:

   fields: FormlyFieldConfig[] = [
    {
      key: 'Input',
      type: 'input',
      templateOptions: {
        label: 'Input',
        placeholder: 'Placeholder',
        description: 'Description',
        required: true,
        appearance: 'outline',
      },
    },
  ];
 

для Formly вы можете использовать templateOptions для определения контура внешнего вида в конфигурации полей формы. источник здесь

Комментарии:

1. Это не мой случай. Код формы выглядит следующим <formly-form [form]="form" [fields]="fieldsDescription"></formly-form> образом . Форма генерируется с помощью cycle и form builder, fieldsDescription тоже. Но я не занимаюсь mat-form-field этим, это делается на стороне формы

2. Я нашел кое-что, что может работать Формально. Ответ обновлен

3. Да, и именно так я делаю это прямо сейчас. Мой вопрос заключается в том, как я могу избежать написания appearance: 'outline' каждый раз. Это не СУХО. Не удается найти какие-либо настройки по умолчанию для компонентов в formly

4. затем, я думаю, вам нужно предоставить еще немного кода. Как составлена ваша форма описания?