可以从 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 的定义和数据,动态创建一个该类的实例相关推荐

  1. 【Excel】使用定义名称+数据验证创建二级组合框

    [Excel]使用定义名称+数据验证创建二级组合框 在Excel中创建如下样式的二级组合下拉选项框 1.创建二级名称 为学院及专业创建二级名称: 全选要处理的区域->公式->根据所选内容创 ...

  2. R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集)、ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull)

    R语言为散点图添加凸包(convex hull):数据预处理(创建一个包含每组数据凸包边界的数据集).ggplot2使用geom_polygon函数为可视化图像添加凸包(convex hull) 目录

  3. python怎么定义空矩阵_Python创建一个空的稀疏矩阵

    我试图将一些真实数据解析为一个.mat对象,以便在我的 matlab脚本中加载. 我收到此错误: TypeError: 'coo_matrix' object does not support ite ...

  4. python定义一个类savingaccount表示银行账户_创建一个SavingAccount类

    /*5.创建一个SavingAccount类.使用一个static数据成员 annualInterestRate保存每个存款者的年利率.类的每个 对象都包含一个private数据成员savingsBa ...

  5. 创建python虚拟环境,安装django,创建一个django项目,在项目中创建一个应用(ubuntu16.04)...

    一.创建python虚拟环境 首先,为什么要创建python的虚拟环境? 因为,在实际的项目开发中,每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要 我们根据需求不断的更新或卸载相应的库 ...

  6. python虚拟环境中安装diango_创建python虚拟环境,安装django,创建一个django项目,在项目中创建一个应用(ubuntu16.04)...

    一.创建python虚拟环境 首先,为什么要创建python的虚拟环境? 因为,在实际的项目开发中,每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要 我们根据需求不断的更新或卸载相应的库 ...

  7. python如何创建一个文件夹_利用Python怎么创建一个文件夹

    利用Python怎么创建一个文件夹 发布时间:2020-12-08 14:48:04 来源:亿速云 阅读:91 作者:Leah 这期内容当中小编将会给大家带来有关利用Python怎么创建一个文件夹,文 ...

  8. django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作

    动态创建table, 并通过 Django ORM 操作. 动态的创建表 动态的创建模型其实就是在运行时生成 Model 类, 这个可以通过函数实现, 通过传参(今天的日期, 如: 20181211) ...

  9. asp.net接受表单验证格式后再提交数据_创建一个注册界面,并记录到数据库中...

    demo开始时我们需要准备点东西 1.jQuery 可以去cdn.js上copy一个, 2.我们要安装好node.js, 因为需要自己搭建一个服务器去测试,32位,64位,下载后配置好就行 3.开始写 ...

  10. MFC小程序003------MFC使用WebBrowser组件,在对话框中创建滚动视图,动态创建一个静态文本控件并设置鼠标单击的消息响应...

    MFC小程序截图: 一.在MFC中简单使用WebBrowser的ActiveX插件的方法: 见博文:  http://blog.csdn.net/supermanking/article/detail ...

最新文章

  1. c语言24点游戏流程图,C语言解24点游戏程序
  2. ie php脚本引擎,使用php重新实现PHP脚本引擎内置函数
  3. CSS实现自适应的图片背景边框代码
  4. Java 7试用资源
  5. oracle 数据库bak文件怎么打开,Oracle数据库的参数文件备份与恢复
  6. 计算机专业简述,简述计算机专业毕业论文完整版.doc
  7. UGUI ScrollRect 滑动
  8. access身份证号掩码_access输入掩码
  9. 巫妖易语言post-js逆向教程
  10. u盘安装centos8黑屏_求助啊为何装centos7一点安装就黑屏
  11. HTML div表格排版,畅谈DIV排版和table排版的区别
  12. 怎么分析出京东快递物流多次派件的单号
  13. 一招解决python pip install 安装库失败
  14. 谷歌云服务_Google Cloud_使用注意
  15. 常见LED贴膜屏规格尺寸,选择透明贴膜屏需注意的事项
  16. 快消品行业ERP系统仓储模块应该包括哪些功能?
  17. 关于#include iomanip中iomanip的作用~
  18. 中国石油大学《政治学原理》第一次在线作业
  19. 黑白简约Mac高清动态壁纸
  20. JavaEddy的难题

热门文章

  1. Linux基础命令---apachectl
  2. kudu 存储引擎简析
  3. amazeui学习笔记一(开始使用4)--Web App 相关
  4. 《Android艺术开发探索》学习笔记之View的事件体系(一)
  5. Kosaraju算法(发现强连通分图算法)
  6. linux中的opencv多版本共存切换的问题
  7. python基础学习(十二)变量进阶
  8. 一、从Windows消息机制说起
  9. OC语言Block 续
  10. Random Maze HDU - 4067 费用流/可行流