2016-05-06 2 views
4

В Angular 2 Я хочу использовать route.path .. чтобы получить путь.Угловой 2 получить маршрут нет поставщиков по маршруту

Внутри конструктора компонентов У меня есть:

constructor(private route: Route) {} 

Так что я хотел бы быть в состоянии назвать:

this.route.path 

И для приложения начальной загрузки я получил:

bootstrap(AppComponent, 
[ 
    ROUTER_PROVIDERS, 
]); 

Но я все еще получаю Отсутствие провайдера для маршрута! ошибка

+0

Если вы используете внешний конструктор, попробуйте один раз изменить модификатор в contructor на public – mayur

ответ

4

Я предполагаю, что вы впрыснуть Location вместо Route. Route предназначен для настройки маршрута, и у Angular нет возможности узнать, какой экземпляр Route вводить.

Location предоставляет функцию path() для получения текущего URL-адреса.

В зависимости от версии Angular2 существуют различные пути, из которых можно импортировать их.

Смотрите также Location and HashLocationStrategy stopped working in beta.16

< = бета 15

import {Location} from 'angular2/router'; 

> = бета 16 < rc.0

import {Location} from 'angular2/platform/common'; 
constructor(private location:Location) { 
    console.log(location.path()); 
} 

> = rc.0

import {Location} from '@angular/common'; 
+0

Вы установили меня на правильный трек, это должно быть 'import {Location} из '@ angle/common'; 'поскольку 2.0.0-rc.0 Если вы добавите это, я соглашусь :) – RobSeg

+0

Правильно, забыл, что он снова изменился –

0

Route класс может быть введен. Вы можете впрыснуть Router один или RouteParams:

constructor(private router:Router,private params:RouteParams) { 
    this.id = params.get('id'); 
} 

Если вам необходим путь текущего маршрута, потребляющих инъекционные скорее Location класса и использовать его метод path

constructor(private location:Location) { 
    var path = location.path(); 
} 
+0

Откуда вы импортируете сообщение о маршруте RouteParams post (rc.1). Он не работает, чтобы импортировать его из @ angular/router, и я не могу найти, где он говорит это где-нибудь еще. – mottosson

0

TRY с ROUTER_BINDINGS вместо этого.

+1

ROUTER_BINDINGS устарел (вместо этого используйте ROUTER_PROVIDERS), так как alpha41 – RobSeg

+0

слишком короткая для ответа, вы можете использовать это как комментарий тоже. –

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