【问题标题】:Resolving component from class name in Angular 4从Angular 4中的类名解析组件
【发布时间】:2018-06-26 06:49:55
【问题描述】:

是否可以从字符串中解析组件?

以前在 Angular 2 中,我们可以做到这一点see here。但是,在 Angular 4 中,同样的方法会抛出错误。

private resolver: ComponentFactoryResolver

var factories = Array.from(this.resolver['_factories'].keys());
var factoryClass = <Type<any>>factories.find((x: any) => x.name === this.comp);
const factory = this.resolver.resolveComponentFactory(factoryClass);
const compRef = this.vcRef.createComponent(factory);

【问题讨论】:

  • 错误是什么?
  • 元素隐式具有 'any' 类型,因为 'ComponentFactoryResolver' 没有索引签名

标签: angular


【解决方案1】:

看起来您可能依赖于实现细节。但是,为了避免该错误,您可以将类型显式转换为 any 以访问索引器。假设有一个 _factories 属性,这应该可以工作:

var factories = Array.from((<any>this.resolver)['_factories'].keys());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2017-09-23
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多