跳转到主要内容

第一部分 在本系列中,我们介绍了Angular 冲突的基础知识. 在这里,我们将深入研究并揭示更多的概念.

布局在冲突

冲突库中的布局帮助我们设计具有现代美学的响应式表单.

我们必须使用 场GroupClass的名字 属性,并且必须分配类名. 然后在 场Group 我们还需要加上一个性质 类名称 (类名可以是任何名称,但应该传递命名约定)

formFields = [
{
场GroupClass的名字:“显示flex”
场Group:(
{
  名称:“flex-1”,
  类型:“输入”,
  templateOptions: {
     标签:“Workset名称”
   }
},
{
  名称:“flex-1”,
  类型:“选择”,
  templateOptions: {
     标签:“工作流”,
     options: [{id: 1, name: 'Workflow 1'}]
  }
},
{
  名称:“flex-1”,
  类型:“选择”,
  templateOptions: {
     标签:“过程”,
     options: [{id: 1, name: '进程1'}]
   }
}
......]
}
]随着冲突FieldConfig []
布局与flexbox

布局与flexbox

如果没有包装器类,所有的字段将一个显示在另一个的下面.

自定义模板

如上所述的 第1部分, 冲突支持多个预构建模板. 然而,我们也可以创建自定义模板.

首先,您必须创建一个表示扩展字段的组件 FieldType class.

从@angular/core中导入{Component};
import {FieldType} from ` @ngx-formly/core `;

@ component ({
选择器:“formly-custom-template-input-场”,
模板:
  
`,
})
导出类冲突CustomTemplateInputField扩展FieldType {}

中的自定义类型注册 NgModule 声明:

冲突Module.forRoot ({
 类型:[
   {name: 'input', component: 冲突FieldInput},
 ],
}),

类型 允许你指定一个自定义类型,你可以在你的字段配置中使用,需要两个属性:

  1. name:模板的名称
  2. component:当这个类型被设置时form应该创建的组件

在表单配置中使用新创建的自定义类型:

字段:冲突FieldConfig[] = [
  {
    关键:“firstname”,
    类型:“输入”,
  },
];

在冲突中构建嵌套的表单

在某些情况下,我们需要嵌套表单. 要做到这一点,只需在字段配置中添加以下额外属性,

包装:(“委员会”),
templateOptions: {label: 'Address'},
场Group ({}):

在哪里,包装器是一个面板. 下 templateOptions 我们必须给出一个标签名称,以便在面板上显示该名称. 最后一个属性是 场Group 在哪里我们可以添加很多字段.

钩子

为了定制表单控件在运行时的行为,冲突包含了一个叫做钩子的概念. 这些都是类型"冲突LifeCycleOptions,提供以下生命周期:

  1. OnInit
  2. onchange
  3. doCheck
  4. afterContentInit
  5. afterContentChecked
  6. afterViewInit
  7. afterViewChecked
  8. onDestroy

这是这些生命周期钩子的一个例子,

关键:“First的名字”,
钩子:{
      onInit: (场: 冲突FormField) {
          场.templateOptions.label = '输入姓名'
      }
}

当表单在视图中渲染时,我们初始化字段标签为“First的名字”, 在运行时,我们将显示标签为“输入名称”. 我们已经初始化的标签将不再显示在视图中. 因此,这意味着我们可以使用钩子控制任何字段的标签和值. 使用“RxJs”的操作也可以在form中使用.

关键:“cityId”,
选择:[]
钩子:{
      onInit: (场: 冲突FormField) {
          场.templateOptions.选择=字段.form.get(“stateId”).valueChanges.pipe(switchMap(nationId => this.名.getCities (stateId))
     )      
  }
}

这里,我们假设我们有一个状态列表,并基于所选 stateId 我们将把这些城市从美国过滤出来. 我们可以将过滤后的城市直接关联到选项数组.

结论

冲突库帮助快速构建具有自定义验证的表单, 使用服务来使用API获取结果, 运行时更改等.

留下一个回复