“导航在Angular区域之外触发”说明>>

问题描述 投票:12回答:1

我正在使用Angular开发电子应用程序。我创建了一个Electron菜单项,其中click()将IPC发送到app.component.ts以更改视图。下面的代码有效,但是如果直接调用router.navigateByUrl,则会在DevTools中收到以下错误:

Navigation triggered outside Angular zone, did you forget to call 'ngZone.run()'?

如您所见,我现在通过ngZone调用router.navigateByUrl,解决了问题,但是尽管在文档中阅读了有关NgZone的内容并在此处和其他地方进行了搜索,但我不知道这是做什么的,为什么我需要这样做。

  1. 直接调用this.router.navigateByUrl有什么问题?

  2. 当在app.component.ts中调用时,为什么告诉我该调用在Angular区域之外?

  3. 电子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}`);
        });
    }
}

先谢谢您。

我正在使用Angular开发电子应用程序。我创建了一个Electron菜单项,其中click()将IPC发送到app.component.ts以更改视图。下面的代码有效,但是我得到了...

angular electron router
1个回答
0
投票

如文档所述:

区域提供了在异步任务之间持久存在的执行上下文

© www.soinside.com 2019 - 2024. All rights reserved.