【发布时间】:2019-08-07 06:14:00
【问题描述】:
我需要制作一个响应式表单的深层副本。
我曾尝试使用 ES6 扩展语法来克隆表单。我已经使用 Typescript 泛型将扩展语法的返回值类型转换为 FormGroup。此外,克隆表单变量的类型设置为FormGroup。
但是当通过这种方式克隆表单时,克隆的表单变量上的类型丢失了,即不再是FormGroup的类型。所以,克隆出来的表格是不可用的。
这是相同的堆栈闪电战:form cloning
上述克隆方式出了什么问题?为什么FormGroup类型在克隆表单上丢失了?
【问题讨论】:
-
您不能克隆类型。它们只是为了方便。 Javascript 没有类型(有点),打字稿有。
-
您正在做的是创建一个 POJO(不是 FormGroup 的实例:这需要调用其构造函数)并将 FormGroup 的属性复制到 POJO。它根本不是深拷贝,而是浅拷贝,而且它不会创建 FormGroup 的实例。为什么要克隆 FormGroup?你想解决什么具体问题?
-
这只是解决您要解决的任何问题的错误方法。通常,您需要一组有限的表单,只需创建一个方法来创建您需要的表单,以便您可以根据需要实例化它们。
-
在使用扩展语法后,使用 TypeScript 泛型将结果类型转换为 FormGroup 有什么问题吗?这根本就不是类型转换吗?
-
这能回答你的问题吗? Deep copy of Angular Reactive Form?
标签: angular angular-reactive-forms deep-copy