Ich habe Stunden damit verbracht, herauszufinden, wie man die URLSearchParams
Abhängigkeit in eine Komponente korrekt injiziert.So verwenden Sie URLSearchParams in Angular 2
In meiner boot.ts
stelle ich sicher, dass HTTP_PROVIDERS
enthalten - ich bin ehrlich gesagt nicht einmal sicher, dass es für URLSearchParams
erforderlich ist.
Ich habe auch sichergestellt, dass ich das http-Bundle-Skript in meiner Seite einschließen.
boot.ts
bootstrap(AppComponent, [
HTTP_PROVIDERS,
ROUTER_PROVIDERS,
provide(LocationStrategy, {useClass: HashLocationStrategy}),
PanelsService,
FiltersService
])
Es ist FiltersService
wo ich URLSearchParams
zu injizieren bin versucht.
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
im Konstruktor Injektion verursacht den Fehler:
I this article, ein paar Mal in der Tat gelesen habe und kann nicht herausfinden, wo ich falsch liege.
Für was es wert ist, stoße ich auf das gleiche Problem beim Versuch, RouteParams
zu injizieren. Mir fehlt eindeutig etwas Grundlegendes.
EDIT: Für etwas mehr Klarheit ist das, was meine StoriesComponent
wie folgt aussieht:
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: Hier ein plunk ist das mein Problem demonstriert - siehe peopleService.ts
Was ist storiesComponent in Ihrem Projekt? Ich denke, Problem ist in der Klasse nicht im Filter.Service überprüfen Sie wieder storiesComponent. –
@PardeepJain Ich habe meine Frage mit dem Inhalt meiner 'StoriesComponent' aktualisiert – garethdn