Angular 7/Electron : Routing does not complete after BrowserWindow. 隐藏,然后是 BrowserWindow.show

标签 angular typescript electron angular2-routing

我有一个在 Electron 窗口中运行的 Angular 7 应用程序。 main.ts 中的 Electron 进程必须执行以下操作:

  1. main.ts:显示窗口 + 加载 Angular 应用程序的 url
  2. Angular:做它该做的事情
  3. Angular:使用 ipcRenderer 告诉主进程它已暂时完成
  4. main.ts:BrowserWindow.hide()
  5. main.ts:还有其他
  6. main.ts:BrowserWindow.show()
  7. main.ts: mainWindow.webContents.send('route', '/myroute');
  8. Angular:this.ipcRenderer.on('route', (event:any,route:string) => { this.router.navigateByUrl(route); });

预期行为:窗口隐藏,然后显示并显示新组件。

实际行为:窗口隐藏,然后显示,并显示部分加载的组件,然后显示前一个路由的(例如入口点)组件。

app-routing.module.ts

import { NgModule } from '@angular/core';
import { Router, RouterModule, Routes } from '@angular/router';

<route component imports>

const routes: Routes = [
    { path: '', redirectTo: '/entrypoint', pathMatch: 'full' },
    { path: 'entrypoint', component: EntryPointPageComponent },
    { path: 'myroute', component: MyRouteComponent },
    { path: '**', redirectTo: '/entrypoint' }
];

@NgModule({
    exports: [ RouterModule ],
    imports: [ RouterModule.forRoot(routes, { useHash: true }) ]
})

export class AppRoutingModule {
    constructor(private router: Router) {
        this.router.events.subscribe((value) => {
            console.log(`Router event! ${ typeof value}: ${ value }`);
        }, (err) => {
            console.log(`Router failure! ${ err }`);
        });
    }
}

当需要路由到 /myroute 时,我看到以下事件按此顺序执行:NavigationStartRoutesRecognized、 GuardsCheckStart、ChildActivationStart、ActivationStart、GuardsCheckEnd、ResolveStart、ResolveEnd/code>、ActivationEndChildActivationEndNavigationEnd滚动

最后,我使用控制台日志语句实现了 MyRouteComponent 中的所有事件生命周期,但没有一个被执行。

您知道阻止路由成功运行的问题是什么吗?

最佳答案

我们能够在内部解决这个问题,但现在我感觉很愚蠢。

诀窍是将路由请求 package 在 ngZone.run() 中。

关于Angular 7/Electron : Routing does not complete after BrowserWindow. 隐藏,然后是 BrowserWindow.show,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54189515/

相关文章:

angular - 为什么打字工具会故意创建重复的打字集?

typescript - 我可以有一个 Typescript 函数返回一个标量或数组值而不需要调用者强制转换输出吗

Angular 2 为单个服务或每个请求禁用 XSRFStrategy

json - 从 Angular 2 中的 json 文件获取数据

css - 在按钮单击时将 CSS 应用于特定的 div

javascript - 如何在帖子列表中首先添加新帖子?

Typescript:如何将非 .ts 文件导入为原始字符串

javascript - Electron JS - 深度链接 - 如何使用深度链接的示例

typescript - 如何在Electron项目中添加自己的 typescript 类

javascript - 在Electronic中,我如何将URL加载为启动器而不是本地文件