使用字符串查找Angular Type

时间:2018-05-22 15:07:58

标签: angular

我正在制作一个带有工具箱的拖放应用程序,您可以从中抓取小部件并将它们放在div中。我跟着this example,它到目前为止工作得很好,但现在我希望能够保持配置(到JSON)然后重新加载它,我就卡住了。

托管组件获取ComponentFactoryResolver。从那里我可以说:

let factory = resolver.resovleComponentFactory( SomeComponent )

但我的下一步是能够使用名称(字符串)这样做。 ComponentFactoryResolver需要一个Type。是否有某种方法可以查找类型名称?我想通过注入框架必须有一些方法可以这样做,但我无法通过API文档建立连接。

1 个答案:

答案 0 :(得分:1)

"问题"是你必须在主机组件中导入将要注入的每个组件。 让我们说:

import { SomeComponent1 } from '../component1';
import { SomeComponent2 } from '../component2';
import { SomeComponent3 } from '../component3';

实现目标的一种方法是将它们与对象联系起来

components = {
  'key1': SomeComponent1,
  'key2': SomeComponent2,
  'key3': SomeComponent3
}

然后使用一个字符串(在我的下面的例子中,从另一个方法中检索)来获取你想要的组件

const key = someMethodOrServiceThatGivesYouAString();
let factory = resolver.resovleComponentFactory( this.components[key] );

我知道这不是你想要的,但这是我在当前正在工作的应用程序中这样做的方式。