我试图弄清楚为什么模板中没有呈现可观察的事件。我正在努力帮助我的一位同事。他正在使用 Angular 2 做一个 Electron 项目,并且使用 JavaScript 而不是 TypeScript。这很痛苦,希望我们能尽快将其转换为 TypeScript。
变量 'eventEmitter' 与异步管道绑定(bind)在模板中。我有一个 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 = {}));
最佳答案
所以我确实解决了这个问题。问题是我在 Angular 2 代码中收到了 Electron ipc 消息,并且区域系统无法处理来自另一个线程的调用。由于代码不在区域中,因此未检测到事件。我将代码 package 在 ngzone 中。
关于javascript - Angular2模板中未呈现可观察事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34909378/