Подтвердить что ты не робот

Нет провайдера ActivatedRoute - Angular 2 RC5

После обновления до Angular 2 RC5 (с RC4) кажется, что я больше не могу вставлять ActivatedRoute в мои компоненты.

ОРИГИНАЛЬНОЕ ИСКЛЮЧЕНИЕ: Нет провайдера ActivatedRoute!

Вот соответствующий фрагмент кода:

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

import { 
  ActivatedRoute
} from '@angular/router';

declare var module: {
  id: string;
};

@Component({
  moduleId: module.id,
  selector: 'mds-app',
  templateUrl: 'app.component.html',
  styleUrls: [
      'app.component.css'
  ],
  directives: []
})
export class AppComponent { 

  constructor(private _route: ActivatedRoute) {
    this._route.params.subscribe(params => console.log(_route));
  }
}

и здесь my app.module.ts:

import { NgModule }      from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { CommonModule }  from '@angular/common';
import { Routes, RouterModule }  from '@angular/router';

import { AppComponent }  from './app.component';

import { 
    routing, 
    appRoutingProviders 
} from './app.routing';

@NgModule({
  imports:      [ BrowserModule, CommonModule, RouterModule ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ],
  providers:    [ appRoutingProviders ]
})
export class AppModule { }

Я проверил пример "Tour of Heroes", и они делают то же самое, нет объявления поставщика для ActivatedRoute, так что здесь интересно?

4b9b3361

Ответ 1

Я просматривал Angular 2 проблемы на GitHub и нашел решение вышеупомянутой проблемы из чистой удачи (см. здесь).

Мне нужно было добавить routing (см. import выше) в imports в NgModule, т.е.

@NgModule({
  imports:      [ BrowserModule, CommonModule, RouterModule, routing ],
  declarations: [ AppComponent ],
  bootstrap:    [ AppComponent ],
  providers:    [ appRoutingProviders ]
})

Похоже, что Angular 2 сообщения об ошибках стали более запутанными, чем они уже были.

Я надеюсь, что этот ответ будет полезен кому-то, я уже собирался вытащить свои волосы.

EDIT: по популярному запросу, здесь фрагмент для импортированного routing (у меня на голове, так как я ушел с работы на этой неделе, сообщите мне в комментариях, если есть какие-либо проблемы с ним):

app.routing.ts:

export routes: Routes = [
   { path: 'sales', component: SalesComponent }
];

export routing = RouterModule.forRoot(routes);

а в app.module.ts вы импортируете его следующим образом:

import { routing } from 'app.routing'

Ответ 2

Если вы получите эту ошибку в модульных тестах, вам нужно импортировать RouterTestingModule