angular - 从angular2中的字符串解析组件的类型<>

标签 angular typescript

是否可以从 Type<T> 获取组件类型 ( string )值(value)?像:

let typeStr: string = 'MyComponent';
let type: any = resolveType(typeStr); // actual type

最佳答案

如果不为您的类维护一个“注册表”,您就无法做到这一点。

interface Component { }

type ComponentClass = { new (): Component };

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

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

至于如何向这个REGISTRY添加条目,你有几个选择,这里有两个:

(1) 在每个类定义之后手动添加:

class ComponentA implements Component { ... }
REGISTRY.set("ComponentA", ComponentA);

或者为它做一个函数:

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

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

(2) 使用装饰器:
只需使用上面的 register 函数作为装饰器:

@register
class ComponentA implements Component { ... }

关于angular - 从angular2中的字符串解析组件的类型<>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42949647/

相关文章:

javascript - Angular:向组件传递一个函数,该函数一旦在目标组件中执行就应该调用本地(到目标组件)方法

html - 如何将删除操作移至 ng2 智能表的最后一列?

typescript - 如何强制方法参数值成为接口(interface)的元素

javascript - typescript 从包含 url 的字符串中获取主机名、协议(protocol)、端口

TypeScript:如何编写异步函数组合的 asyncPipe 函数?

reactjs - 如何使用 TypeScript 编写包含对象的 props 接口(interface)并与 defaultProps 合并

c# - 如何在客户端检索付款方式?

javascript - 如何从另一个脚本调用变量来执行函数

javascript - Angular 组件库中的内联样式未显示

angular - 在 ng2-charts 中隐藏未使用的轴