Поскольку вам нужны текущие параметры маршрута, вместо activatedRoute.snapshot
, вы должны подписаться на activatedRoute.params
. Это даст вам самое последнее и обновленное значение параметров текущего маршрута.
Ваш метод обслуживания не должен отвечать за получение id
от ActivatedRoute
. Это должно быть ответственностью вашего Component
. Ваша служба должна нести ответственность только за получение id
от component
, а затем выполнять необходимые действия исходя из этого id
.
Вы должны извлечь идентификатор из activatedRoute
в вашем компоненте. А затем вызвать метод сервиса, передав ему id
export class MainComponent {
constructor(
private dataService: DataService,
private activeRoute: ActivatedRoute
) { }
getChartsData() {
this.activeRoute.params.subscribe(params => {
if(params['id']) {
this.dataService.getChartsData(params['id'])
.subscribe(data => console.log(data));
}
})
}
}
И к вашим услугам
@Injectable({
providedIn: "root"
})
export class DataService {
getChartsData(id) {
if (id) {
...
} else {
...
}
}
}