angular - View 不会刷新收到的IPC消息

标签 angular electron ipc

我的组件正确接收到一条消息(如调试器所见),但是未刷新其 View 。在IPC监听器中需要进行任何手动操作吗?

这是我的组件HTML代码:
<div> {{text}} </div>
这是TypeScript:

 import { Component, OnInit } from '@angular/core';
 import { ipcRenderer } from 'electron'

 @Component({
   selector: 'app-receiver',
   templateUrl: './receiver.component.html',
   styleUrls: ['./receiver.component.scss']
 })
 export class ReceiverComponent implements OnInit {
   text: string;

 constructor() { }

 ngOnInit() {
  ipcRenderer.on('msg', function (event, arg){
    this.text=arg;
     })
   }
 }

我希望页面从Electron进程收到的新字符串显示在页面上,但不会发生

最佳答案

IPC的事件处理在 Angular 区域之外运行。该事件不是所谓的“猴子补丁”。您应该在ngZone.run调用中应用更改。除此之外,您还使用了function关键字,该关键字使this上下文更改为该函数,并且无法再访问this类。使用箭头符号:

constructor(readonly nz: NgZone) { }

ngOnInit() {
  ipcRenderer.on('msg', (event, arg) => {
    this.nz.run(() => this.text = arg);
  });
}

不过不要忘了在ngOnDestroy中“取消监听”消息,否则您将在销毁的指令上触发一次detectChanges,而angular不会那样:)

关于angular - View 不会刷新收到的IPC消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54630120/

相关文章:

angular - 最佳从 EventEmitter 事件重新进入 ngZone

reactjs - Electron :无法加载 http://localhost:8080

usb - 通过 USB 使用 Electron

c - ioctl() 每次给出不同的大小

c - 在 C/C++ 中执行 linux 程序并通过 stdin/stdout 与其通信的最简单方法

angular - 在 Angular 中按顺序运行一组 http 调用

angular - 无法使用 firestore 解析数据

javascript - 测试所有已终止的功能

c - 使用两个单向管道的双向通信

angular - 背景地理定位 ionic 3 不更新