Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用Electron菜单执行角度7导航_Javascript_Angular_Electron_Angular7 - Fatal编程技术网

Javascript 如何使用Electron菜单执行角度7导航

Javascript 如何使用Electron菜单执行角度7导航,javascript,angular,electron,angular7,Javascript,Angular,Electron,Angular7,我正在使用angular 5.2.11和election 3.0.7版本,并尝试使用Electron菜单导航到angular 5组件。当我单击electron菜单时,它会导航到页面,但我的组件只执行构造函数,而不是任何角度的生命周期挂钩,直到我在electron窗口中单击为止。然后页面加载并按预期工作 menu.js文件: const { Menu } = require('electron'); const menuTemplate = [ label: 'Maintenance'

我正在使用angular 5.2.11和election 3.0.7版本,并尝试使用Electron菜单导航到angular 5组件。当我单击electron菜单时,它会导航到页面,但我的组件只执行构造函数,而不是任何角度的生命周期挂钩,直到我在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();
});
openSar () {
    this._router.navigate(['/sargen']);
    ipcRenderer.send('page-nav-complete');
}
app.component.ts中的角度方法:

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

ipcRenderer.on('goto-sar', function(sender, arg) {
  this.openSar();
});
openSar () {
    this._router.navigate(['/sargen']);
    ipcRenderer.send('page-nav-complete');
}

主窗口似乎没有获得焦点?我做错了什么?

您必须使用
NgZone.run()
。更多这里-。这就是我必须做的,用电子做角度工作,并在
渲染器中使用路线导航

例子
非常感谢。工作得很有魅力。我已经搜索了几个月的答案。对于我来说,您的解决方案不起作用,我得到以下错误:找不到模块:错误:无法在中解析“fs”。我使用Angular 7,它与我的答案或这个问题无关,您试图使用
fs
,它可能是文件系统,但您没有安装该模块。如果您需要进一步帮助,请提出具体问题。@Oen44谢谢您的反馈。我安装了这个软件包,它被电子模块引用。我认为由于Angular 6 ng构建不允许引用fs。。。因此,在我看来,这似乎与问题或您的答案有关。@laurentis运行此问题与您所得到的错误无关。如果兼容性有问题,请更新到Angular 7。我研究过电子和角7,没有任何问题。标题表明它是角7的解决方案,但你的问题是关于角5。你能澄清一下吗?