Angular 2:在注入Router之前引导至少一个组件

Gle*_*ter 8 angular

我的RC5应用程序中出现此错误:

承诺拒绝:在注入Router之前引导至少一个组件.

main.ts:

import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule);
Run Code Online (Sandbox Code Playgroud)

app.module.ts:

@NgModule({
  imports: [
    BrowserModule,
    routing,
    SharedModule.forRoot()
  ],
  declarations: [
    AppComponent, 
    ErrorComponent
  ],
  bootstrap: [AppComponent]
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)

shared.module.ts:

@NgModule({
  imports: [CommonModule, RouterModule, HttpModule, FormsModule, ReactiveFormsModule],
  declarations: [TranslatePipe, DateToStringPipe, HeaderComponent, FooterComponent],
  exports: [TranslatePipe, DateToStringPipe, CommonModule, FormsModule, ReactiveFormsModule, HeaderComponent, FooterComponent]
})
export class SharedModule {

  static forRoot(): ModuleWithProviders {

    return {
      ngModule: SharedModule,
      providers: [
        FeedbackService,
        CookieService,
        AuthService,
        LoggerService,
        RouteGuard,
        {
          provide: TranslateLoader,
          useFactory: (http: Http) => new TranslateStaticLoader(http, 'app/languages', '.json'),
          deps: [Http]
        },
        TranslateService,
        SearchService,
        SharedComponent,
        HeaderComponent,
        FooterComponent
      ]
    };

  }

}

@NgModule({
  exports: [ SharedModule],
  providers: []
})
export class SharedRootModule {}
Run Code Online (Sandbox Code Playgroud)

app.component.ts:

export class AppComponent extends SharedComponent implements OnInit {

constructor(
    _feedbackService: FeedbackService,
    _loggerService: LoggerService,
    _translateService: TranslateService,
    _authService: AuthService,
    _router: Router
) {

    super(
        _feedbackService,
        _loggerService,
        _translateService,
        _authService,
        _router
    );

}
Run Code Online (Sandbox Code Playgroud)

最后是shared.component.ts:

constructor(
    protected _feedbackService: FeedbackService,
    protected _loggerService: LoggerService,
    protected _translateService: TranslateService, 
    protected _authService: AuthService, 
    protected _router: Router
) {

}
Run Code Online (Sandbox Code Playgroud)

我尝试使用AppComponent没有这样的扩展名SharedComponent:

export class AppComponent implements OnInit {

constructor(){
}
Run Code Online (Sandbox Code Playgroud)

但是仍然会产生同样的问题.

Dow*_*ski 7

角认为这是没有必要注入RouterModule水平,这是合理的你注入Router至少一个组件加载后.我怀疑至少有一个服务必须注入Router,这是提供给加载的Module,这会导致此错误.您可以做的是将使用该服务的服务注入Router到app组件中,因此首先加载至少一个组件,并且所有子组件将从app组件继承该服务.