如何为 formControl 添加元数据?
How to add meta data for formControl?
我有表格数组 FormGroup
;
let forms = [this.form1, this.form2];
每个表单都有几个控件:FormControl
。
如何向 FormControl
添加其他数据,例如元素类型(输入、文本区域、select)?
例如我有表格:
export class ProfileEditorComponent {
profileForm = this.fb.group({
firstName: [''],
lastName: [''],
address: this.fb.group({
street: [''],
city: [''],
state: [''],
zip: ['']
}),
});
我怎么知道 zip 字段下应该是 input
还是 select
?
如何在具有嵌套形式的模板中迭代 profileForm
?
问题编辑前回答
更新
以下称为模块扩充here or enter link description here
这允许扩充(例如添加方法 pr 属性)来自第三方模块的 classes
原版
我们有一个警告验证器的要求,angular 没有提供。
我们所做的是 typings.d.ts
文件中的以下内容,该文件必须驻留在我们的应用程序根目录中。
declare module '@angular/forms' {
export interface AbstractControl {
warnings: ValidationErrors | null;
}
}
ValidationErrors
是我们的习俗 class。
你可以这样做
declare module '@angular/forms' {
export interface AbstractControl {
elementType: string; // input, textarea, select
}
}
有了它,您应用程序中的所有 AbstractControls
都可以使用 属性 elementType
。
您也可以使用 FormControl
而不是 AbstractControl
有一个提出此功能的未解决问题:https://github.com/angular/angular/issues/19686。
现在,您可以应用一个不太“漂亮”的解决方案。您可以在 FormGroup
中转换 FormControl
,并使用元数据创建 FormControl
或 FormGroup
:
this.fb.group({
firstName: this.fb.group({
value: [''],
_metadata: this.fb.group({
type: ['input'], // type of element
})
})
)}
我有表格数组 FormGroup
;
let forms = [this.form1, this.form2];
每个表单都有几个控件:FormControl
。
如何向 FormControl
添加其他数据,例如元素类型(输入、文本区域、select)?
例如我有表格:
export class ProfileEditorComponent {
profileForm = this.fb.group({
firstName: [''],
lastName: [''],
address: this.fb.group({
street: [''],
city: [''],
state: [''],
zip: ['']
}),
});
我怎么知道 zip 字段下应该是 input
还是 select
?
如何在具有嵌套形式的模板中迭代 profileForm
?
问题编辑前回答
更新
以下称为模块扩充here or enter link description here
这允许扩充(例如添加方法 pr 属性)来自第三方模块的 classes
原版
我们有一个警告验证器的要求,angular 没有提供。
我们所做的是 typings.d.ts
文件中的以下内容,该文件必须驻留在我们的应用程序根目录中。
declare module '@angular/forms' {
export interface AbstractControl {
warnings: ValidationErrors | null;
}
}
ValidationErrors
是我们的习俗 class。
你可以这样做
declare module '@angular/forms' {
export interface AbstractControl {
elementType: string; // input, textarea, select
}
}
有了它,您应用程序中的所有 AbstractControls
都可以使用 属性 elementType
。
您也可以使用 FormControl
而不是 AbstractControl
有一个提出此功能的未解决问题:https://github.com/angular/angular/issues/19686。
现在,您可以应用一个不太“漂亮”的解决方案。您可以在 FormGroup
中转换 FormControl
,并使用元数据创建 FormControl
或 FormGroup
:
this.fb.group({
firstName: this.fb.group({
value: [''],
_metadata: this.fb.group({
type: ['input'], // type of element
})
})
)}