import { Component, OnInit } from '@angular/core';
import { IpcRendererService } from './services/ipc-renderer.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
title = 'Angular UI';
constructor(private ipcRendererService: IpcRendererService) { }
ngOnInit() {
this.ipcRendererService.on('fromMain', (event, message) => {
this.title = message;
});
}
sendToMain() {
const message = 'Hello from Angular!';
this.ipcRendererService.send('fromAngular', message);
}
}
const { app, BrowserWindow, ipcMain } = require('electron')
let mainWindow
function createWindow () {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true,
enableRemoteModule: true
}
})
mainWindow.loadFile('index.html')
mainWindow.on('closed', function () {
mainWindow = null
})
}
app.on('ready', () => {
createWindow()
})
ipcMain.on('fromAngular', (event, message) => {
console.log(message) // 打印信息
event.reply('fromMain', 'Hello from electronjs!') // 子进程发送回复信息
})
确认你已经在electronjs应用的主进程中启用了enableRemoteModule。
确认你将ipcRendererService注入到了你的Angular组件中。
如果上述方法都失败了,你也可以尝试手动调用zone的update方法:
import { Component, OnInit, NgZone } from '@angular/core';
import { IpcRendererService } from './services/ipc-renderer.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css