Angular - 从它的名称访问组件/类

时间:2018-04-04 15:02:45

标签: angular

我在this link中找到了一个解决方案建议,并尝试通过在全局(ts)文件中添加以下代码来将其实现到我的项目中。

interface Component { }

type ComponentClass = { new (): Component };

const REGISTRY = new Map<string, ComponentClass>();

function getTypeFor(name: string): ComponentClass {
    return REGISTRY.get(name);
}

function register(cls: ComponentClass): void {
    REGISTRY.set(cls.name, cls);
}

然后注册我的每个组件如下:

class ComponentA implements Component { ... }
register(ComponentA);

我使用 getTypeFor 方法获取我的组件类型。当我尝试在组件的构造函数中放置一个参数时,一切都接近完美。正如我所看到的,这个&#34; ComponentClass&#34;类型等待无参数构造函数。 如果我的cnonstructor有参数,我该如何使用此方法或任何其他解决方案。

1 个答案:

答案 0 :(得分:1)

尝试以下:

type ComponentClass = { new (...args:any[]): Component };