Angular 如何根据一个 class 的定义和数据,动态创建一个该类的实例
可以从 SAP 电商云 Spartacus UI 的实现中找到一个例子。
return this.resolveModuleFactory(moduleFunc).pipe(map(([moduleFactory]) => moduleFactory.create(parentInjector)),concatMap((moduleRef) => this.runModuleInitializersForModule(moduleRef)),tap((moduleRef) =>this.events.dispatch(createFrom(ModuleInitializedEvent, {feature,moduleRef,}))));}
下图这段代码,createFrom 方法的输入参数 ModuleInitializedEvent,是我们在另一个 TypeScript 文件里定义的一个 class,而 feature 和 moduleRef,是实例数据:
createFrom 的实现:
/*** Creates an instance of the given class and fills its properties with the given data.** @param type reference to the class* @param data object with properties to be copied to the class*/
export function createFrom<T>(type: Type<T>, data: T): T {console.log('Jerry dynamically created new instance for type: ', type , ' with data: ' , data);return Object.assign(new type(), data);
}
这里传入的 class 定义,和传入的实例数据,必须严格匹配:
例如 ModuleInitializedEvent 的字段 feature 和 moduleRef,在我们传入 createFrom 函数的实例数据里是一一对应的。
更多Jerry的原创文章,尽在:“汪子熙”:
Angular 如何根据一个 class 的定义和数据,动态创建一个该类的实例相关推荐
- 【Excel】使用定义名称+数据验证创建二级组合框
[Excel]使用定义名称+数据验证创建二级组合框 在Excel中创建如下样式的二级组合下拉选项框 1.创建二级名称 为学院及专业创建二级名称: 全选要处理的区域->公式->根据所选内容创 ...
- R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集)、ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull)
R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集).ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull) 目录
- python怎么定义空矩阵_Python创建一个空的稀疏矩阵
我试图将一些真实数据解析为一个.mat对象,以便在我的 matlab脚本中加载. 我收到此错误: TypeError: 'coo_matrix' object does not support ite ...
- python定义一个类savingaccount表示银行账户_创建一个SavingAccount类
/*5.创建一个SavingAccount类.使用一个static数据成员 annualInterestRate保存每个存款者的年利率.类的每个 对象都包含一个private数据成员savingsBa ...
- 创建python虚拟环境,安装django,创建一个django项目,在项目中创建一个应用(ubuntu16.04)...
一.创建python虚拟环境 首先,为什么要创建python的虚拟环境? 因为,在实际的项目开发中,每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要 我们根据需求不断的更新或卸载相应的库 ...
- python虚拟环境中安装diango_创建python虚拟环境,安装django,创建一个django项目,在项目中创建一个应用(ubuntu16.04)...
一.创建python虚拟环境 首先,为什么要创建python的虚拟环境? 因为,在实际的项目开发中,每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要 我们根据需求不断的更新或卸载相应的库 ...
- python如何创建一个文件夹_利用Python怎么创建一个文件夹
利用Python怎么创建一个文件夹 发布时间:2020-12-08 14:48:04 来源:亿速云 阅读:91 作者:Leah 这期内容当中小编将会给大家带来有关利用Python怎么创建一个文件夹,文 ...
- django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作
动态创建table, 并通过 Django ORM 操作. 动态的创建表 动态的创建模型其实就是在运行时生成 Model 类, 这个可以通过函数实现, 通过传参(今天的日期, 如: 20181211) ...
- asp.net接受表单验证格式后再提交数据_创建一个注册界面,并记录到数据库中...
demo开始时我们需要准备点东西 1.jQuery 可以去cdn.js上copy一个, 2.我们要安装好node.js, 因为需要自己搭建一个服务器去测试,32位,64位,下载后配置好就行 3.开始写 ...
- MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...
MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文: http://blog.csdn.net/supermanking/article/detail ...
最新文章
- c语言24点游戏流程图,C语言解24点游戏程序
- ie php脚本引擎,使用php重新实现PHP脚本引擎内置函数
- CSS实现自适应的图片背景边框代码
- Java 7试用资源
- oracle 数据库bak文件怎么打开,Oracle数据库的参数文件备份与恢复
- 计算机专业简述,简述计算机专业毕业论文完整版.doc
- UGUI ScrollRect 滑动
- access身份证号掩码_access输入掩码
- 巫妖易语言post-js逆向教程
- u盘安装centos8黑屏_求助啊为何装centos7一点安装就黑屏
- HTML div表格排版,畅谈DIV排版和table排版的区别
- 怎么分析出京东快递物流多次派件的单号
- 一招解决python pip install 安装库失败
- 谷歌云服务_Google Cloud_使用注意
- 常见LED贴膜屏规格尺寸,选择透明贴膜屏需注意的事项
- 快消品行业ERP系统仓储模块应该包括哪些功能?
- 关于#include iomanip中iomanip的作用~
- 中国石油大学《政治学原理》第一次在线作业
- 黑白简约Mac高清动态壁纸
- JavaEddy的难题