1

我怎样才能拥有一个只初始化一次的全局提供程序。所以我有以下提供者

@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 提供程序在整个应用程序中只初始化一次?

4

1 回答 1

0

所以这里的问题是我在子模块中声明了提供者。即使很难我只在子模块中使用提供程序,它仍然在每次注入时初始化。所以我不得不在主模块中声明它,它按预期工作。

于 2016-09-12T09:59:05.470 回答