Просмотр не обновляется при получении сообщения IPC - PullRequest
0 голосов
/ 11 февраля 2019

Мой компонент правильно получает сообщение (как я мог видеть с помощью отладчика), но его представление не обновляется.Есть ли какая-либо ручная операция, выполняемая в прослушивателе 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 голосов
/ 11 февраля 2019

Обработка событий IPC выполняется за пределами угловой зоны.Событие не так называется «обезьяна залатана».Вы должны применить изменения внутри ngZone.run вызова.Кроме того, вы используете ключевое слово function, которое вызывает изменение контекста this на эту функцию и больше не может получить доступ к классу this.Используйте обозначение стрелки:

constructor(readonly nz: NgZone) { }

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

Не забудьте «отменить прослушивание» для msg в ngOnDestroy, в противном случае вы запускаете DetectChanges для уничтоженной директивы, а angular это не нравится :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...