2016-08-11 6 views
1

ルータを3.0.0-rc.1で使用して2.0.0-rc.5にアップグレードしようとしています。RC4からRC5への角2のアップグレード、エラー:ルータに注入する前に少なくとも1つのコンポーネントをブートストラップする

私はドキュメントからアップグレードの手順に従っています(私にとってうまくいっているRC4から移動しています)。

Unhandled Promise rejection: Bootstrap at least one component before injecting Router. 

Zone: <root> ; Task: Promise.then ; Value: Error: Bootstrap at least one component before injecting Router. 
at  setupRouter  node_modules/@angular/router/src/common_router_providers.js:21:15) 
at NgModuleInjector .get (AppModule .ngfactory .js:227:57) 
at NgModuleInjector .AppModuleInjector .createInternal (AppModule .ngfactory .js:309:55) 
at NgModuleInjector .create 

/node_modules/@angular/core/src/linker/ng_module_factory .js:91:76) 
at NgModuleFactory .create /node_modules/@angular/core/src/linker/ng_module_factory .js:75:18) 
/node_modules/@angular/core/src/application_ref .js:341:43) 
at ZoneDelegate .invoke 
/node_modules/zone .js/dist/zone .js:323:29) 
at Object .onInvoke 
node_modules/@angular/core/src/zone/ng_zone_impl.js:53:41) 
at ZoneDelegate 
/node_modules/zone.js/dist/zone .js:322:35) 
at Zone.run /node_modules/zone .js/dist/zone .js:216:44) 
+0

メインの 'NgModule'がどのように見えるかを追加してください。ブートストラップコンポーネントを追加しましたか? –

+0

OKは、ルータをいくつかの既存のコンポーネントのコンストラクタに注入して、注入を削除してエラーが消えてしまったようです。 – lcurrens

+0

私は同じエラーがありますが、コードベースのコンポーネントやサービスはルータをコンストラクタに注入しません:( – ulfryk

答えて

3

ISSUE:https://github.com/angular/angular/issues/11660

SOLUTION:私はこのエラー、何が起こっているのか全く分からない取得していますが、ルータを必要とするサービスにルータ、この

@NgModule({ 
    imports : [ 
     BrowserModule 
    ], 
    providers : [ 
     { 
     provide : Http, 
     useFactory: (
      xhrBackend: XHRBackend, 
      requestOptions: RequestOptions, 
      router: Router, <-- our problem 
      constantsService:ConstantsService, 
      loaderComponentHelper: LoaderComponentHelper 
     ) => new HttpInterceptor(xhrBackend, requestOptions, router, constantsService, loaderComponentHelper), 
     deps: [XHRBackend, RequestOptions, Router, ConstantsService, LoaderComponentHelper], 
    }, 
    { 
     provide : AuthHttp, 
     useFactory: (http: Http, authService: AuthService, constantsService: ConstantsService) => { 
      return new AuthHttp(http, authService, constantsService); 
     }, 
     deps : [Http, AuthService, ConstantsService] 
    }] 
}) 

使用のようなものを注入Injector 、それをコンストラクタに渡して、内部に定義してください。

import {Injector} from '@angular/core'; 

this.router = this.injector.get(Router); 

しかし、コンストラクタでこれをしないでください

+0

ルータを使用するすべてのクラスをリファクタリングする必要がありますか? –

関連する問題