Angular2 - AOT - 定义动态组件提供程序

时间:2018-02-09 03:03:21

标签: angular

我对angular2组件提供程序有些麻烦。我想提供一些在组件级别上定义的提供程序

@Component({
    selector: "component",
    template: 'hello',
    providers: [SomeService]
})
如果直接将服务设置为提供者,

这将起作用。在我的情况下,添加到提供者列表的提供者将从不同的模块提供。

我创建了一个静态类,所有模块都可以为此组件提供自己的组件提供程序,但AOT Build将在构建期间返回错误:

  

在静态解析符号值时遇到错误。调用功能' AppBridge',不支持功能调用。考虑使用对导出函数的引用替换函数或lambda,解析符号brdigeProvide。

我试过这个例子:

@Component({
    selector: "component",
    template: 'hello',
    providers: [AppBridge.getProviders('A')]
})

AppBridge.getProviders将返回一个带有提供定义的数组,例如

[{ provide: AbstractMyService, useClass: MyService }, OtherService]

有没有办法在组件上提供服务?我需要这个,因为提供这个组件的模块不应该引用其他模块'在应用程序内部。

我很高兴你可以给我一个提示。也许这是不可能的Oo因为angular2 / x需要静态的一切。

我创建了一个例子: https://stackblitz.com/edit/angular-dynamic-provider

与@estus交谈后 这里有更多细节。我的问题的背景是,FESM将在运行时加载。此模块应为将在运行时调用的组件提供服务。该组件将创建n次,并且服务还应为每个组件创建n次。

0 个答案:

没有答案