Obularable事件未在Angular2模板中呈现

时间:2016-01-20 19:59:45

标签: javascript angularjs electron

我试图找出为什么在模板中没有呈现可观察事件的原因。我正在努力帮助我的一个同事。他正在使用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 = {}));

1 个答案:

答案 0 :(得分:0)

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