【发布时间】:2019-06-08 21:55:34
【问题描述】:
我有一个在 Electron 窗口中运行的 Angular 7 应用程序。 main.ts 中的 Electron 进程必须执行以下操作:
-
main.ts: 显示窗口 + 将 url 加载到 Angular 应用程序 - Angular:做它的事
- Angular:使用 ipcRenderer 告诉主进程它暂时完成了
-
main.ts: BrowserWindow.hide() -
main.ts:还有其他的吗 -
main.ts: BrowserWindow.show() -
main.ts:mainWindow.webContents.send('route', '/myroute'); - 角:
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 时,我看到以下事件按此顺序进行:NavigationStart、RoutesRecognized、GuardsCheckStart、ChildActivationStart、ActivationStart、GuardsCheckEnd、 ResolveStart, ResolveEnd, ActivationEnd, ChildActivationEnd, NavigationEnd, Scroll.
最后,我使用控制台日志语句实现了MyRouteComponent 中的所有事件生命周期,但没有一个被执行。
您知道阻止路由成功运行的问题是什么吗?
【问题讨论】:
标签: angular typescript electron angular2-routing