Ich möchte die Logik von Komponente zu Service verschieben. Aber ich habe herausgefunden, dass ich die routeParams nicht in einem Service bekommen kann.Angular 2 get routeParams in einem Service
Meine Komponente sieht aus wie
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Params } from '@angular/router';
import { MyService } from '../services/my.service';
@Component({
moduleId: module.id,
templateUrl: 'my.component.html',
styleUrls: ['my.component.css']
})
export class MyComponent implements OnInit {
constructor(private myService: MyService, private route: ActivatedRoute) {;}
public ngOnInit() {
this.route.params
.subscribe((params: Params) => {
debugger;
console.log(params);
});
this.myService.getParams()
.subscribe((params: Params) => {
debugger;
console.log('Return1:');
console.log(params);
}, (params: Params) => {
debugger;
console.log('Return2:');
console.log(params);
},() => {
debugger;
console.log('Return3:');
});
}
};
Mein Service sieht aus wie
import { Injectable } from '@angular/core';
import { Params, ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';
@Injectable()
export class MyService {
constructor(private route: ActivatedRoute) {;}
public getParams(): Observable<Params> {
this.route.params.subscribe((params: Params) => {
debugger;
console.log('Service1:');
console.log(params);
}, (params: Params) => {
debugger;
console.log('Service2:');
console.log(params);
},() => {
debugger;
console.log('Service3:');
});
return this.route.params;
}
};
Wenn ich mich debuggen kann sehen, dass params in der Komponente und leer in Betrieb gefüllt sind. Das ist das Ergebnis
Component:
Object {param: "1"}
Service1:
Object {}
Return1:
Object {}
Ich benutze Angular 2.0.0. Warum der Unterschied in Komponente und Service? Ist es möglich, Params in einem Service zu bekommen?
EDIT: https://github.com/angular/angular/issues/11023
haben Sie done Abschnitt der subscribe-Methode versucht? – Lonely
Ich habe onError und onComplete hinzugefügt, aber die Funktionen werden nicht ausgeführt. Ich versuche 3 mal params zu bekommen. Einmal direkt in der Komponente, einmal direkt im Service und einmal in der Komponente als Rückkehr aus dem Service. Und nur der erste Versuch funktioniert. –