angular – 使用对象定义定义FomGroup
|
是否可以使用对象定义本机定义ReactiveForm组,而不是直接在组件中定义?
我改为: formEdit = this.fb.group({
id: [null],userName: [{ value: null,disabled: true }],email: [null,Validators.required],name: [null,nickName: [null,Validators.required]
});
使用类似的东西: formEdit = this.fb.group(User); 在User类中,我相应地修饰了它的属性. 更新 在User类中定义装饰器会很好,如下所示: export class User {
@required
@disabled
userName: string;
@required
@minValue(0)
@maxValue(100)
price: number;
...
}
解决方法
我认为你在寻找的是Angular中的
Dynamic Forms.
根据Angular指南:
您必须进行一些可能非常耗时的初始设置.但是一旦得到解决,形式的创建就非常简单. 上面链接的文档有一个很好的指南和用例,其中构建动态表单是有意义的. 更新: 如果您不想更改模板,则必须根据您提供的配置创建一个可以为您生成FormGroup的方法.但同样,这将需要配置而不是POJO. 如果您仍然感兴趣,可以从这里开始: import { Component } from '@angular/core';
import { FormGroup,FormControl,Validators,FormArray } from '@angular/forms';
@Component({
selector: 'my-app',templateUrl: './app.component.html',styleUrls: [ './app.component.css' ]
})
export class AppComponent {
name = 'Angular';
sampleObject = {
id: { value: null },userName: { value: null,disabled: true },email: { value: null,validators: [Validators.required] },name: { value: null,nickName: { value: null,validators: [Validators.required] }
};
formGroup: FormGroup;
ngOnInit() {
this.formGroup = new FormGroup(this.createFormGroup(this.sampleObject));
console.log(this.formGroup);
}
private createFormGroup(config) {
const group = {};
for(let key in config) {
const itemConfig = config[key];
group[key] = new FormControl(itemConfig.value,itemConfig.validators);
}
return group;
}
}
注意:这不适用于所有方案.如果希望它在所有情况下都能工作,则必须相应地改进createFormGroup方法.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
