Я перезагружаю страницу, чтобы сменить язык с этим кодом в компоненте-обертке, который по сути является моей панелью навигации:
changeLanguage(language: string) {
const url = this.router.url.replace(new RegExp('(\/de\/|\/fr\/|\/it\/)',
'g'), '/' + language + '/');
this.router.navigateByUrl(url);
}
в моем компоненте у меня есть этот код:
this.router.routeReuseStrategy.shouldReuseRoute = function() {
return false;
};
Чтобы страница полностью перезагружалась при смене языка, и я могу использовать ngOnInit при переходе по тому же URL-адресу.
В моей функции ngOnInit у меня есть следующий код:
ngOnInit() {
this.subscription = this.translate.onLangChange.subscribe(x => {
console.log('in subscription');
this.service.getIngredients().subscribe(ingredients => {
// stuff
});
// get all tea-types
this.service.getTeas().subscribe(teas => {
// stuff
});
});
}
Я отменяю подписку на эту подписку, когда вызывается ngOnDestroy. Всякий раз, когда я перезагружаю страницу более одного раза, подписка вообще не вызывается, даже если вызывается мой ngOnInit. Что я могу сделать, чтобы сделать эту работу?