2016-07-19 4 views
2

это быстрый вопрос .. но я хочу получить текущий URL-адрес моего приложения в различных компонентах, я не хочу выводить это значение из моего компонента маршрутизации поскольку это может быть удалено/изменено во времени. Поэтому я хочу работать с классом Location в Angular2. В моем компоненте я добавлю следующее ...Angular2 - browser_adapter.ts ОРИГИНАЛЬНОЕ ИСКЛЮЧЕНИЕ: Нет провайдера для местоположения

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

в моем компоненте я заявляю это в моем конструкторе ...

constructor(public translate:TranslateService, router:Router, private location: Location) 

Теперь, когда я пытаюсь работать с этим я заметил ошибку в моей консоль ... browser_adapter.ts:82 ORIGINAL EXCEPTION: No provider for Location!

Класс местоположения находится в @angular/common? Я не вижу, как я совершил ошибку здесь? Я использую Angular2 предвыпускную 4. Вот что мой код выглядит как в целом, я редактировал это, чтобы сделать его менее подавляющим:

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

@Component({ 
    selector: 'my-app', 
    directives: [ ], 
    pipes: [ ], 
    templateUrl: 'src/main.html' 
}) 
class MyComponent { 

    constructor(private location: Location) { 
     console.log(location); 
    } 
} 

ответ

0

Чтобы придать Location в компоненте вам необходимо пройти ROUTER_DIRECTIVE в качестве директивы в компоненте метаданных.

Это разрешено угловым образом вводить Location должным образом.

import {Location} from '@angular/common'; 
    import { ROUTER_DIRECTIVES } from '@angular/router' 

    @Component({ 
     selector: 'my-app', 
     directives: [ ROUTER_DIRECTIVES], 
     pipes: [ ], 
     templateUrl: 'src/main.html' 
    }) 
    class MyComponent { 
    } 

Вы также можете получить URL из самого маршрутизатора вам по this.router.url

Source: см раздел примеров.

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