全局角度的bootstraping服务使用

时间:2017-06-07 05:41:54

标签: angular service

我创建了一个服务,我希望在这个服务中共享数据,所以我在一些教程中发现我必须在我的应用程序的appmodule中引导服务,以确保这只是该服务的一个实例:

@NgModule({
  declarations: [
    AppComponent,
    ProfileComponent,
    TestComponent,


  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    SlimLoadingBarModule.forRoot(),
    FormWizardModule

  ],
  exports: [BrowserModule, SlimLoadingBarModule],
  providers: [UserResolverService,SessionService,  appRoutingProviders ],
  bootstrap: [AppComponent,[SessionService]]
})
export class AppModule { }

我在boostrap中创建SessionService,但我在浏览器控制台中出错:

  

zone.js:522未处理的Promise拒绝:组件SessionService是   不属于任何NgModule或模块尚未导入您的   模块。 ;区域:;任务:Promise.then;值:ZoneAwareError   {__zone_symbol__error:错误:组件SessionService不属于   任何NgModule或模块尚未导入......}错误:   组件SessionService不是任何NgModule或模块的一部分   没有导入你的模块。

这是我的主要内容:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { enableProdMode } from '@angular/core';
import { environment } from './environments/environment';
import { AppModule } from './app/app.module';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);

1 个答案:

答案 0 :(得分:0)

我认为您的教程来自测试版。

因为在r.c版本之前,符号就像

bootstrap(AppComponent, [provide(SharedService, {useValue: sharedService})]);

现在,如果您想要全局提供服务作为单身人士,您所要做的就是在根模块的供应商数组中提供服务。

@NgModule({
  declarations: [
    AppComponent,
    ProfileComponent,
    TestComponent,


  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    SlimLoadingBarModule.forRoot(),
    FormWizardModule

  ],
  exports: [BrowserModule, SlimLoadingBarModule],
  providers: [UserResolverService, SessionService,  appRoutingProviders ],
  bootstrap: [AppComponent] //<---- remove it from here
})
export class AppModule { }