在angular中从外部模块调用服务方法

时间:2019-02-21 14:03:18

标签: angular

我遇到的情况是,在应用程序运行时会加载外部模块,并且该模块中存在的服务及其核心方法是未知的。

一旦加载了这样的模块,我想从其服务中调用一个函数。

我当前的解决方案是从外部模块获取注入器,并使用需要任何令牌的Injector上已弃用的方法 get 获得服务。在我的情况下,它是一个字符串,因为当外部模块在装入之前未知时,我不知道如何使用Type 或InjectionToken 。这是我现在获得的代码示例(编译是compileModuleAndAllComponentsAsync编译器方法的结果):

const moduleRef = compiled.ngModuleFactory.create(this.injector);
const injector = moduleRef.injector;
const actionService = this.injector.get(serviceName);
actionService[serviceMethod]();

有没有更好的方法来调用服务的方法?我试图将这些函数传递给核心服务,但是这样我就失去了对moduleRef.injector的访问权限,而当该函数使用外部模块中的另一个函数并且制动了绑定到该关键字的属性时,将需要此访问。

0 个答案:

没有答案