2017-08-25 106 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是設計用來很好地消費這些物品(爲您節省了很多樣板代碼)