2016-08-25 12 views
8

otrzymuję ten błąd w moim RC5 aplikacji: Odrzuceniekątowa 2: Bootstrap przynajmniej jeden składnik przed wstrzyknięciem Router

obietnicy Bootstrap przynajmniej jednego składnika przed wstrzyknięciem Router.

main.ts:

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

app.module.ts:

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

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 {} 

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 
    ); 

} 

i wreszcie shared.component.ts:

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

} 

Próbowałem za pomocą AppComponent bez rozszerzenia z SharedComponent tak:

export class AppComponent implements OnInit { 

constructor(){ 
} 

ale nadal produkuje ten sam problem.

Odpowiedz

7

Angular uważa, że ​​nie jest konieczne wstrzykiwanie Router na poziomie Module, uzasadnione jest wstrzykiwanie Router po załadowaniu co najmniej jednego komponentu. Podejrzewam, że co najmniej jedna z twoich usług musi być wstrzykiwana Router, która jest dostarczana do załadowanego Module, co powoduje ten błąd. Jedyne, co możesz zrobić, to wstrzyknąć usługę, która korzysta z komponentu aplikacji, używając Router, więc przynajmniej jeden składnik zostanie załadowany jako pierwszy, a wszystkie Twoje podkomponenty odziedzią tę usługę z komponentu aplikacji.

Powiązane problemy