我还在努力学习ng2,所以我确信这是一个常见的noob问题,但我在网上找到的解决方案都没有帮助。有谁知道我的问题是什么?
我有一个带有getEventList()方法的服务作为可观察的
getEventList(): Observable<any>{
return this.http.get('./assets/data.json')
.map(response => response.json());
}
我在我的组件
中订阅了它ngOnInit(){
this.eventService.getEventList()
.subscribe(events => {
this.zone.run(()=>{
this.events = events;
console.log(this.events)
});
});
}
我的模板只是尝试以json格式输出事件变量
<p>
{{
events | json
}}
</p>
正如您所看到的,我将事件的值分配给zone.run()回调中的局部变量。仍未看到我的模板更新。我也尝试过ApplicationRef.tick和ChangeDetectorRef.detectChanges(),但似乎都没有检测到我的更改。
Console.log调用确认数据已更新。在此组件上触发的任何单击处理程序似乎也会更新视图。
任何人都知道我在这里做错了什么?我是否发布了足够的代码来获得一些建议?让我知道你还想看到什么。
答案 0 :(得分:0)
这应该这样做,假设您在调用function doSetTimeout(i, colors, strArray) {
if(i >= strArray.length) return;
$("use." + strArray[i]).css("fill", colors[Math.floor((Math.random() * colors.length) + 1)]);
setTimeout(function() {
$("use").css("fill", "#333333");
doSetTimeout(i + 1, colors, strArray);
}, 1000);
}
doSetTimeout(0, colors, strArray);
方法之前尚未为this.events
分配值:
getEventList()
答案 1 :(得分:0)
种子将ChangeDetectionStrategy设置为OnPush。将此设置为默认值可解决我的问题。