В моем приложении Ioni c Angular я добавляю прослушиватель событий щелчка в моей службе маркеров ниже:
makeCapitalMarkers(map: L.map): void {
map.on('popupopen', function () {
if (document.querySelector('.norwayLink')) {
const link = document.querySelector('.norwayLink')
link.addEventListener('click', buttonClicked)
}
});
function buttonClicked() {
console.log('EXECUTED');
}
}
Выше код вызывается в моем домашнем компоненте :
ngAfterViewInit(): void {
this.markerService.makeCapitalMarkers(this.map);
}
В настоящее время "EXECUTED" печатается, поэтому метод запускается .
Но когда buttonClicked () , я хочу использовать маршрутизатор angular для перехода к компоненту чата .
Я попробовал следующий код:
function buttonClicked() {
this.router.navigate(['/chat'])
}
Невозможно прочитать свойство 'navigate' из неопределенного
Я объявил маршрутизатор в конструкторе как publi c, поэтому я не знаю, почему его не улавливают в этой функции.
Как мне перейти к компоненту чата с помощью этой функции?
Должен ли я быть в состоянии перемещаться по маршрутам внутри службы, или это должно быть сделано внутри Домашнего компонента ?
Вот мои маршруты:
const routes: Routes = [
{ path: '', redirectTo: 'home', pathMatch: 'full' },
{ path: 'home', loadChildren: () => import('./home/home.module').then( m => m.HomePageModule)},
{
path: 'chat',
loadChildren: () => import('./chat/chat.module').then( m => m.ChatPageModule)
},
];