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

前端之家收集整理的这篇文章主要介绍了从angular2中的字符串解析组件的类型<>前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
是否可以从字符串值获取组件类型(Type< T>)? Smth喜欢:

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
class ComponentA implements Component { ... }

猜你在找的Angularjs相关文章