Я работаю над приложением Electron, используя Angular.Я создал элемент меню Electron, где click () отправляет IPC на app.component.ts, чтобы изменить представление.Приведенный ниже код работает, но я получаю следующую ошибку в DevTools, если я вызываю router.navigateByUrl напрямую:
Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?
Как видите, теперь я вызываю router.navigateByUrl через ngZone, решая проблему, но несмотря начитая о NgZone в документах и ища здесь и в других местах, я не понимаю, что это делает и зачем мне это нужно.
Что не так с непосредственным вызовом this.router.navigateByUrl?
Почему он говорит мне, что вызов находится за пределами угловой зоны, когда он вызывается в app.component.ts?
Электрон main.js
function sendToAngularRouter(request)
{
console.log('sending request');
win.webContents.send('routeToPage', request);
}
Угловой app.component.ts
export class AppComponent implements OnInit {
constructor(public electronService: ElectronService,
private router: Router, private zone: NgZone) {}
ngOnInit() {
this.electronService.ipcRenderer.on('routeToPage', (sender, arg) => {
this.navigateTo(arg);
});
}
navigateTo(arg: string): void {
this.zone.run(() => {
this.router.navigateByUrl(`/${arg}`);
});
}
}
Заранее спасибо.