美文网首页
Angular 如何根据一个 class 的定义和数据,动态创建

Angular 如何根据一个 class 的定义和数据,动态创建

作者: _扫地僧_ | 来源:发表于2021-12-10 09:09 被阅读0次

可以从 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 的定义和数据,动态创建

    可以从 SAP 电商云 Spartacus UI 的实现中找到一个例子。 下图这段代码,createFrom 方法...

  • Angular 4 动态创建组件

    这篇文章我们将介绍在 Angular 中如何动态创建组件。 定义 AlertComponent 组件 首先,我们需...

  • 28. OOP-使用__slots__

    当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活...

  • 元类

    元类: 动态语言和静态语言最大的不同,就是函数和类的定义,不是编译时定义的,而是运行时动态创建的。 class的定...

  • 面向对象高级编程

    正常情况下,定义了一个class,创建了一个class的实例后,可以给该实例绑定任何属性和方法,这就是动态语言的灵...

  • Python面向对象高级编程1

    @[toc] 1.使用slots 1.1动态绑定class的属性 正常情况下,当我们定义了一个class,创建了一...

  • ios 动态创建和复用结构

    在iOS开发中,UI对象的创建我一值坚持的动态创建对象。顶部菜单为例根据数据完成UI对象的创建,动态完成和修改。保...

  • C# 类和对象

    类(Class)为动态创建的类实例(亦称为“对象”)提供了定义。新类使用类声明进行创建。 标头,指定了类的特性和修...

  • class_weight

    创建数据。 使用sklearn自动计算class_weight。 在定义loss_function时将class_...

  • Skywalking-09:OAL原理——如何通过动态生成的Cl

    OAL 如何通过动态生成的 Class 类,保存数据 前置工作 OAL 如何将动态生成的 SourceDispat...

网友评论

      本文标题:Angular 如何根据一个 class 的定义和数据,动态创建

      本文链接:https://www.haomeiwen.com/subject/jjnuzltx.html