Dou*_*oug 5 javascript electron angular angular7
我正在使用 Angular 5.2.11 和 Election 版本 3.0.7,并尝试使用 Electron 菜单导航到 Angular 5 组件。当我单击电子菜单时,它会导航到该页面,但我的组件仅执行构造函数,而不执行任何角度生命周期挂钩,直到我单击电子窗口。然后页面就会加载并按预期工作。
菜单.js 文件:
const { Menu } = require('electron');
const menuTemplate = [
label: 'Maintenance',
submenu: [
{
label: 'Sar Maintenance',
}
];
menu = Menu.buildFromTemplate(menuTemplate);
Menu.setApplicationMenu(menu);
exports.ApplicationMenu = menu;
Run Code Online (Sandbox Code Playgroud)
索引.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();
});
Run Code Online (Sandbox Code Playgroud)
角度 app.component.ts:
let ipcRenderer = require('electron').ipcRenderer;
app.component.ts constructor:
ipcRenderer.on('goto-sar', function(sender, arg) {
this.openSar();
});
Run Code Online (Sandbox Code Playgroud)
app.component.ts 中的角度方法:
openSar () {
this._router.navigate(['/sargen']);
ipcRenderer.send('page-nav-complete');
}
Run Code Online (Sandbox Code Playgroud)
看来 mainWindow 没有获得焦点?我究竟做错了什么?
你将不得不使用NgZone.run(). 更多这里 - Angular NgZone。这就是我必须做的事情,才能使 Angular 与 Electron 配合使用并在 .NET 中使用路线导航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();
});
});
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2379 次 |
| 最近记录: |