未在 Angular2 模板中呈现的可观察事件

Observable event not rendered in Angular2 template

本文关键字:观察 事件 Angular2 未在      更新时间:2023-09-26

我试图弄清楚为什么模板中没有呈现可观察的事件。我正在尝试帮助我的一位同事。他正在用 Angular 2 做一个 Electron 项目,并使用 JavaScript 而不是 TypeScript。这是一个痛苦,希望我们尽快将其转换为TypeScript。

变量"eventEmitter"在模板中与异步管道绑定。我有一个 2 秒的计时器来发出事件。该模板不显示除 Hello 消息之外的任何内容。我已经输入了断点,计时器正在触发,发射正在发出。我编写了一个订阅代码,并验证了该事件确实会发出并且可以接收。现在已注释掉。这是我的应用程序组件:

var count = 0;
var eventEmitter = new ng.core.EventEmitter();
(function(app) {
var MessageList =
    ng.core.Component({
            selector: 'message-list',
            template:
            '<p>Hello {{name}}</p>' +
            '<p>{{ eventEmitter | async}}</p>'
        })
        .Class({
            constructor: function() {
                console.log("In MessageList");
                /*       eventEmitter
                 .subscribe(
                 function(data) {
                 return data;
                 },
                 function(err) {
                 console.log("EventEmitter error");
                 },
                 function() {
                 console.log("Completed eventEmitter");
                 }
                 );*/

                setInterval(function() {
                    count++;
                    eventEmitter.emit("Got an event at " + count);
                }, 2000)
                this.name = "Test EventEmitter";
            }
        });
app.StatusPage =
    ng.core.Component({
            selector: 'status-page',
            templateUrl: 'app/statuspage.html',
            directives: [MessageList]
        })
        .Class({
            constructor: function() {
            }
        });
})(window.app || (window.app = {}));

所以我确实解决了这个问题。问题是我在我的角度 2 代码中收到一条 Electron ipc 消息,并且区域系统无法处理来自另一个线程的调用。 由于代码不在区域中,因此未检测到事件。我将代码包装在一个ngzone中。