Я уже часами пытаюсь понять, как правильно ввести зависимость URLSearchParams
в компонент.
В моем boot.ts
я обязательно включу HTTP_PROVIDERS
- я честно даже не уверен, что это требуется для URLSearchParams
.
Я также гарантировал, что я включу http-пакет script на моей странице.
boot.ts
bootstrap(AppComponent, [
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy}),
PanelsService,
FiltersService
])
Это FiltersService
, где я пытаюсь ввести URLSearchParams
.
filter.service.ts
import {Component, Injectable} from 'angular2/core';
import {URLSearchParams} from 'angular2/http';
@Injectable()
export class FiltersService {
constructor(private _searchParams:URLSearchParams) { }
setFilter(name, value) {
this._searchParams.set(name, value);
}
getFilter(name) {
this._searchParams.get(name);
}
}
Инъекция URLSearchParams
в конструкторе вызывает ошибку:
Я прочитал эту статью, пару раз на самом деле и не могу понять, где я ошибаюсь.
Для чего это стоит, я сталкиваюсь с той же проблемой при попытке ввести RouteParams
. Мне явно не хватает чего-то фундаментального.
EDIT. Для большей ясности это выглядит как < StoriesComponent
:
import {Component, OnInit} from 'angular2/core';
import {PanelsService} from '../panels/panels.service';
import {RouteParams} from 'angular2/router';
import {FiltersService} from '../common/filters.service';
@Component({
selector: 'stories',
templateUrl: 'app/components/stories/stories.component.html'
})
export class StoriesComponent implements OnInit {
constructor(public panelsService:PanelsService,
public filtersService: FiltersService,
private _routeParams:RouteParams) {
this.panelsService.setSelectedPanel(this._routeParams.params['panelId']);
}
ngOnInit() {
console.log('Stories');
}
addPanel() {
var newPanel = {
id: 999,
name: 'my new panel name',
time: 744
// time: 168
}
this.panelsService.addPanel(newPanel);
}
}
EDIT 2: здесь plunk, который демонстрирует мою проблему - см. peopleService.ts