【发布时间】:2016-09-06 12:31:43
【问题描述】:
我怎样才能拥有一个只初始化一次的全局提供程序。 所以我有以下提供者
@Injectable()
export class ApiRequest {
http: Http;
constructor(@Inject(Http) http) {
console.log('Test');
}
}
然后是共享模块
@NgModule({
imports: [BrowserModule,
HttpModule],
declarations: [ControlMessage, InfiniteScroll],
entryComponents: [ControlMessage],
providers: [ApiRequest],
exports: [ControlMessage, InfiniteScroll],
})
导出类 SharedModule {
static forRoot(): ModuleWithProviders {
return {
ngModule: SharedModule,
providers: [ApiRequest]
};
}
代码正在运行,这里的问题是每次我更改路由时都会初始化 ApiRequest 构造函数,因此每个页面都会更改。如何使 ApiRequest 提供程序在整个应用程序中只初始化一次?
【问题讨论】:
-
听起来模块是延迟加载的。这种情况下需要实现
forRoot()angular.io/docs/ts/latest/guide/ngmodule.html,angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html -
@GünterZöchbauer 也尝试过。同样的问题。编辑问题以使用 forRoot
-
我想我看到了这样一个问题。这应该在 master 中修复并包含在下一个版本中。
-
所以我无能为力吗?我还看到,每次我更改页面时,路由器的主要组件也会执行,尽管我正在更改它的子级。
-
我猜不是。抱歉,不知道其他问题。
标签: angular angular2-routing angular2-providers