2016-09-15 2 views
2

Как отслеживать и устанавливать параметры поиска по URL без маршрутизации?Angular2- Местоположение без маршрутизации?

«Расположение» и, кажется, имеет то, что я хочу. Однако я получаю эту ошибку:

Error: No provider for Location!

С следующим:

import { Component } from '@angular/core'; 
import { Location, HashLocationStrategy } from "@angular/common"; 

@Component({ 
    selector: 'app-root', 
    templateUrl: 'app.component.html', 
    styleUrls: ['app.component.css'], 
    providers: [HashLocationStrategy] 
}) 

export class AppComponent { 
    constructor(private location: Location){} 
} 

Как я знаю, какой провайдер хочет? И есть ли лучший способ сделать это?

+0

вы можете поделиться, почему вы не хотите помощь от службы маршрута? –

+0

Какую версию Angular2 вы используете? Место было перенесено в 2.0.0-beta.16 https://github.com/angular/angular/blob/master/CHANGELOG.md#200-beta16-2016-04-26 – JayChase

+0

@JayChase, это версия I ' m, используя – x0a

ответ

3

Я сделал это один раз. Для реализации HashLocationStrategy вам придется его реализует, как, что в вашем MainComponent:

import {bootstrap} from '@angular/platform-browser-dynamic'; 
import { 
    Location, 
    LocationStrategy, 
    HashLocationStrategy, 
    APP_BASE_HREF 
} from '@angular/common'; 
import {provide} from '@angular/core'; 
import {ROUTER_PROVIDERS} from '@angular/router-deprecated' 

import { HTTP_PROVIDERS } from '@angular/http'; 
import {AppComponent} from './app.component'; 

bootstrap(
    AppComponent 
    , [ 
     HTTP_PROVIDERS 
     ,ROUTER_PROVIDERS 
     , provide(APP_BASE_HREF, { useValue: '/' })  
     , provide(LocationStrategy, { useClass: HashLocationStrategy })] 
);