2016-08-11 2 views
1

Попытка обновления до 2.0.0-rc.5 с использованием маршрутизатора при 3.0.0-rc.1.Угловое обновление 2 до RC5 с RC4, Ошибка: Загрузите по крайней мере один компонент перед инъекцией Маршрутизатор

Я выполнил инструкции по обновлению из документации (переход от 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

У меня такая же ошибка, но ни один компонент или служба в моей базе кода не вводит Router в его конструктор :( – ulfryk

ответ

3

ВОПРОС: https://github.com/angular/angular/issues/11660

РЕШЕНИЕ: Когда инъекционного маршрутизатор в услугах, которые необходимо маршрутизатор, что-то вроде этого

@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

, поэтому вам нужно реорганизовать каждый класс, использующий маршрутизатор? –

Смежные вопросы