2017-08-25 129 views
-1

这可能是一个问题,答案太明显了,但我没有找到一个好的答案。Obj [] Vs. Observable <Obj[]> Angular 2/4

说我使用* ngFor绑定数据的对象数组类型为'Obj'(Obj[] Vs. Observable<Obj[]>)。

的区别是什么/在下列情况下的优点:

  1. 当的OBJ列表会返回一个HTTP响应和频繁更新的
  2. 当的OBJ列表会返回一个HTTP响应,并正在更新一次
  3. 当二级阵列(不通过HTTP填充),而是由另一阵列

是什么在角以及为什么推荐的方式更新?

代码:

//declaration 
private contests: Observable<Contest[]>; 
private dayPlanCandidates: Observable<Contest[]>; 

//populate 
    let response = this.contestService.search(this.query, page, size, sort); 
    this.contests = response.map(p => p.content); 

//http call 
return this.http.get(targetUrl, { params: params }) 
      .share() 
      .map(res => res.json()) 
      .map(pageObj => Page.build(pageObj, Contest.from)); 

<!-- binding--> 
<div *ngFor="let contest of contests | async"> </div> 
<div *ngFor="let contest of dayPlanCandidate"> </div> 

正如你可以在代码中看到,有2个可观测阵列。

  1. 竞赛阵列被直接从HTTP响应

  2. dayPlanCandidates阵列取决于比赛更新。

我的问题: 如果我应该保持两个阵列作为观测或 如果我要保持比赛[]作为可观察到的,并设置dayPlanCandidates只是一个竞赛阵列?

+0

问题应该显示代码,您尝试过什么,您期望什么,出了什么问题 –

+0

对不起,如果我不清楚。没有出错,我只想知道,在数组和可观察数组之外,推荐的方式和原因。 – Maddy

+1

StackOverflow不适合推荐,因为没有一个正确的答案。对于开放式问题,您可以尝试https://softwareengineering.stackexchange.com/再次,如果您添加一些代码并解释您的具体问题,我们可以提供帮助;开放式问题太广泛。 –

回答

0

Observable是一个“简单”的对象,它表现为一个包装异步数据的包装,或者“将在晚些时候出现的数据”。这是RxJS库的一部分(或者一般而言,RX,代表反应扩展名)。此第三方库已集成到Angular中,并且是一个“通用”对象,它允许您很好地操作异步值(一旦获得了) - 为了公平起见,我建立了一个完整的角度项目而不用担心Observables(和类型)

最好使用异步管道Observables,因为Angular是设计用来很好地消费这些物品(为您节省了很多样板代码)

相关问题