gpt4 book ai didi

javascript - 如何使用Electron菜单执行angular 7导航

转载 作者:行者123 更新时间:2023-11-29 20:48:04 29 4
gpt4 key购买 nike

我正在使用 angular 5.2.11 和选举版本 3.0.7,并尝试使用 Electron 菜单导航到 angular 5 组件。当我点击 Electron 菜单时,它导航到页面,但我的组件只执行构造函数而不执行任何 Angular 生命周期 Hook ,直到我点击 Electron 窗口。然后页面加载并按预期工作。

menu.js 文件:

const { Menu } = require('electron');
const menuTemplate = [
label: 'Maintenance',
submenu: [
{
label: 'Sar Maintenance',
}
];

menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);

exports.ApplicationMenu = menu;

index.ts 文件:

const { app } = require('electron');
const BrowserWindow = require('electron').BrowserWindow

let ipcm = require('electron').ipcMain;
let appmenu = require('./menu.js');
let menu = appmenu.ApplicationMenu;
let mainWindow;

function createMainWindow () {
mainWindow = new BrowserWindow({width: 800, height: 800});
mainWindow.loadURL(`file://${__dirname}/index.html`);

menu.items[1].click = () => { // Sar Mainenance
mainWindow.webContents.send('goto-sar', 'sarArg');
}

mainWindow.on('closed', () => {
mainWindow = null
});
}

app.on('ready', createMainWindow)

app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app.quit()
}
});

app.on('activate', () => {
if (mainWindow === null) {
createMainWindow()
}
})

ipcm.on('page-nav-complete', () => {
console.log('NavComplete');
app.focus();
});

Angular app.component.ts:

let ipcRenderer = require('electron').ipcRenderer;
app.component.ts constructor:

ipcRenderer.on('goto-sar', function(sender, arg) {
this.openSar();
});

app.component.ts 中的 Angular 方法:

openSar () {
this._router.navigate(['/sargen']);
ipcRenderer.send('page-nav-complete');
}

似乎 mainWindow 没有获得焦点?我做错了什么?

最佳答案

您将不得不使用 NgZone.run()。更多信息 - Angular NgZone .这就是我必须做的,才能让 Angular 与 Electron 一起工作,并在 ipcRenderer 中使用路由导航。

例子

import { OnInit, NgZone } from '@angular/core';
let ipcRenderer = require('electron').ipcRenderer;

export class MyComponent implements OnInit {

constructor(private ngZone: NgZone) { }

ngOnInit() {
ipcRenderer.on('goto-sar', (event, arg) => {
this.ngZone.run(() => {
this.openSar();
});
});
}

}

关于javascript - 如何使用Electron菜单执行angular 7导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53523191/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com