是否可以从 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/