首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角2-动态组件模板-如何按需克隆FormControl

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

Stack Overflow用户
提问于 2017-09-27 13:56:43
回答 1查看 1.7K关注 0票数 2

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

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

我的问题是,当我内联编辑一行时,我需要同样的验证,所以我需要克隆我为底部行定义的FormControl。

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

代码语言:javascript
运行
复制
...,
{
  name: this.getTrad('Points'),
  value: 'points',
  width: 100,
  type: DataTableComponent.INPUT,
  editable:true,
  numeric:true,
  validationControl:
    new FormControl({ value: '', disabled: false },
      [Validators.required,
      Validators.minLength(1), 
      Validators.maxLength(100)
    ])
},

那么,我如何克隆FormControl来将其分配给动态创建的输入呢?我检查了一个FormControl实例,验证器没有访问器吗?

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

如果有人有更好的主意..。

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2017-11-08 16:53:27

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

代码语言:javascript
运行
复制
@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);
  }
}

使用这种方法,formControl具有与注入AbstractControl相同的statevalidators

Ofc,如果控件的value不是原始类型,则需要执行(深度)副本。

希望它能帮上忙

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46449790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档