如何在Angular 2中使用不带渲染DOM的Observable更新变量,就像实时页面一样

时间:2017-06-06 17:49:24

标签: angular

我是Angular2 +的新手,需要实时创建一个页面。当我加载我的组件时,我使用Observable调用一个服务,并将结果保存在我在模型中的ngFor中使用的变量中。加载后,我需要每分钟刷新一次数据,并需要优化更改后的数据。

有谁知道怎么做?

2 个答案:

答案 0 :(得分:1)

你可以从可观察间隔开始,它会每分钟进行一次轮询。

服务

poll{
     return Observable
            .interval(1000)
            .flatMap(() => {
                //ur Observable from HTTP call 
                return Observable 
            });
}

组件: - 在分配最新值之前尝试比较值,这将避免不必要的分配

   this.service.poll().subscribe(
          data => {
             // if data same don't update
              if((JSON.stringify(this.models) === JSON.stringify(data) === false) ){
 this.models = data;
} 

          }
       );

Html代码

< li *ngFor="let model of models ;trackBy: trackByFn " >
{{model}}
< li >

trackBY将停止不必要的渲染 更多信息 https://angular.io/docs/ts/latest/api/common/index/NgFor-directive.html

答案 1 :(得分:0)

我认为你需要将socket.io与RxJs Observables结合起来才能完成这项任务

检查this