2016-10-10 123 views
1

對於類似於思維導圖的學習應用程序,所有元素(行/文本)都通過視圖中的不同組件放置。數據從數據庫中提取並保存在ObservableArray中(如果它在視圖中)。有兩種截然不同的變化:1.滾動,視圖改變,新數據被提取; 2.用戶在視圖中更改/添加/刪除元素(不會獲取新數據)。如何在Angular 2中的多個組件中使用rxjs Observables

將一個ObjectArray的observable「讀」到它的迭代器中是否更好?將每個Object傳遞給匹配的Component,或者只傳遞一個id數組並讓每個Component訂閱ObservableArray中的匹配元素?

到目前爲止,我正在使用我在許多教程和示例中看到的第一種方法,但使用第二種方法會使用戶更改變得更加容易,只有相關元素纔會發生更改。

+0

這可能也有幫助http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result-of-an-angular-2-http-network -call式 –

回答

1

我覺得第一種方式還是比較好的。在優化方面,你可以使用的*ngFor

<div *ngFor="let item for (items | async); trackBy: item?id"> 
    <item [item]="item"></item> 
</div> 

這裏假設你的項目都有一個唯一的ID trackBy功能。這將確保每個item元素不會再次呈現。另外將項目組件的changeDetectionStrategy設置爲OnPush。因此,僅當輸入(即item)發生變化時纔會觸發項目組件更改檢測。

基本上item組件應該是啞(呈現)組件,它只顯示項目數據。

相關問題