Angular 2-动态组件模板-如何按需克隆FormControl

Angular 2-动态组件模板-如何按需克隆FormControl,angular,clone,angular-reactive-forms,Angular,Clone,Angular Reactive Forms,我实现了一个动态数据表,到目前为止还不错 在表的底部,有一行包含一些列的输入,这些列允许用户添加新记录,并且每个添加的行都是可编辑的 我的问题是,当我内联编辑一行时,我需要相同的验证,因此我需要克隆我为最下面一行定义的FormControl 下面是我在代码中使用的一个定义示例,当我实例化我的数据表组件时(对于一列) 那么,如何克隆FormControl以将其分配给Dynamicly创建的输入? 我检查了一个FormControl实例,验证程序没有访问器 到目前为止,我唯一的想法是为我的组件提供每

我实现了一个动态数据表,到目前为止还不错

在表的底部,有一行包含一些列的输入,这些列允许用户添加新记录,并且每个添加的行都是可编辑的

我的问题是,当我内联编辑一行时,我需要相同的验证,因此我需要克隆我为最下面一行定义的FormControl

下面是我在代码中使用的一个定义示例,当我实例化我的数据表组件时(对于一列)

那么,如何克隆FormControl以将其分配给Dynamicly创建的输入? 我检查了一个FormControl实例,验证程序没有访问器

到目前为止,我唯一的想法是为我的组件提供每列的一个校验器数组,而不是整个FormControl实例

如果有人有更好的主意


谢谢

我刚刚遇到这个问题。我用一个普通的新实例解决了以下用例:

@Component({...})
export class FooDialogComponent {
  formControl: FormControl;

  constructor(@Inject(MAT_DIALOG_DATA) public data: { system: number, control: AbstractControl }, // TODO define interface
             public dialogRef: MatDialogRef<UpdateQuantityDialogComponent>) 
  {
    this.formControl = new FormControl(this.data.control.value, this.data.control.validator);
  }
}
@组件({…})
导出类FoodDialogComponent{
formControl:formControl;
构造函数(@Inject(MAT_DIALOG_DATA)公共数据:{system:number,control:AbstractControl},//TODO定义接口
公共dialogRef:MatDialogRef)
{
this.formControl=newformcontrol(this.data.control.value,this.data.control.validator);
}
}
使用这种方法,
formControl
与注入的
AbstractControl
具有相同的
状态
验证器

Ofc,如果控件的
不是基元类型,则需要执行(深度)复制


希望能有帮助

不错,我一定会试试看有什么消息吗@Phil1234是的,很抱歉,我最终改变了创建验证器的方式,我将结构信息保留在另一个数组中,如果我记得很清楚的话,我尝试了您的代码,但没有定义值……不过还是谢谢您
@Component({...})
export class FooDialogComponent {
  formControl: FormControl;

  constructor(@Inject(MAT_DIALOG_DATA) public data: { system: number, control: AbstractControl }, // TODO define interface
             public dialogRef: MatDialogRef<UpdateQuantityDialogComponent>) 
  {
    this.formControl = new FormControl(this.data.control.value, this.data.control.validator);
  }
}