Witam.
W angularowej aplikacji utworzyłem serwis, którego zadaniem miało być odczytywanie parametru z routingu. Użyłem właściwości params obiektu ActivatedRoute, która jest Observable. Zasubskrybowałem ją i nie działa. Z tego co udało mi się wywnioskować, to callback przekazany do subscribe() odpala się tylko raz przy starcie aplikacji a potem już nie. Nie ważne ile razy zmieni się parametr w routingu. Czy dobrze myślę, że winna jest tu propertka params? Czy jej wartość jest ustalana tylko raz przy załadowaniu komponentu? Czy może problem polega na czymś innym? Z tego co widziałem w kursach Angulara, to można używać Observable w serwisach, więc dlaczego mi nie działa?
Poniżej wrzucam kod serwisu:
import { Injectable, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
@Injectable({
providedIn: 'root'
})
export class LangCheckService {
private id: any;
constructor(private route: ActivatedRoute, private router: Router) {
this.route.params.subscribe(param => {
this.id = param['langId'];
// Logi wstawione po to, żeby sprawdzić czy subscribe w ogóle wywołuje callbacka
console.log(param['langId']);
console.log('Wykonanie callbacka w subscribe');
});
}
checkId() {
if(this.id != 'pl' && this.id != 'en' && this.id != undefined) {
this.router.navigate(['/404']);
}
else return this.id;
}
}
Dodam tylko, że dokładnie ten sam kod użyty w komponencie działa bez zarzutu a w serwisie nie chce.
Z góry dzięki za pomoc.
Pozdrawiam.