视图不会在收到IPC消息时刷新

时间:2019-02-11 11:58:21

标签: angular electron ipc

我的组件正确接收到一条消息(如调试器所见),但未刷新其视图。在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流程收到的新字符串显示在页面上,但不会发生

1 个答案:

答案 0 :(得分:0)

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

constructor(readonly nz: NgZone) { }

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

尽管不要忘记在ngOnDestroy中对消息进行“取消监听”,否则您会在已销毁的指令上触发detectChanges,而angular不会那样:)