Angular 形式:有没有办法为所有输入设置默认选项

问题描述 投票:0回答:3

我有一个正式的表格,里面有很多

mat-inputs
(是的,我正在使用材质)。我希望它们每个人都有
appearance=outline
,因为我可以将它放在每个输入的
templateOptions
内。但这不是干的。有没有办法为我的应用程序中的每个
appearance
设置默认
mat-input
并且不要将其放在每个输入描述中?

UPD。我按以下方式使用正式表单组件

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

form
是通过循环(循环
fieldsDescription
数组)和角度形式生成器生成的。
fieldsDescription
是从后端下载的。现在我在每个输入中都输入了
appearance=outline
。所以
fieldsDescription
是一个如下所示的对象数组

{
    "key": "field_key",
    "type": "input",
    "templateOptions": {
        "label": "A label",
        "appearance": "outline",
        "placeholder": "",
        "required": true
    }
}
angular angular-material angular-formly ngx-formly
3个回答
4
投票

为什么不使用 MAT_FORM_FIELD_DEFAULT_OPTIONS { Appearance: 'outline' } 作为提供程序?我想你想要你所有的输入外观大纲。在你的模块中

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

1
投票

为什么不使用内部模板

<mat-form-field appearance="outline">
?假设您在那里使用
ngFor

乐:

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

对于 Formly,您可以使用

templateOptions
在表单字段配置中定义外观轮廓。来源这里


0
投票

如果你想一次性全局更改

defaultOptions
,你可以尝试:

import { FormlyConfig } from '@ngx-formly/core';

constructor(private formlyConfig: FormlyConfig) {
  this.formlyConfig.setDefaultOptions({
    templateOptions: {
      appearance: 'outline',
    },
  });
}
© www.soinside.com 2019 - 2024. All rights reserved.