Observables/Subjects of Angular2についての私の理解を助けたいと思っています。私は、次の形式のいくつかのデータを表示しようとしているアプリを持っている:角度2の観測可能なサブオブジェクト
'data view component'
|
--> 'section component'
|
--> 'data item component'
のデータ:
sections = [
{
_id: '999'
name: 'section 1'
items: [
{
name: "item 1.1"
property1: "value 1.1.1"
property2: "value 1.1.2"
property3: "value 1.1.3"
}
{
name: "item 1.2"
property1: "value 1.2.1"
property2: "value 1.2.2"
property3: "value 1.2.3"
}
]
},
{
_id: '888'
name: 'section 2'
items: [
{
name: "item 2.1"
property1: "value 2.1.1"
property2: "value 2.1.2"
property3: "value 2.1.3"
}
{
name: "item 2.2"
property1: "value 2.2.1"
property2: "value 2.2.2"
property3: "value 2.2.3"
}
]
}
.
.
.
]
。これを行うには、私はこのようになりますコンポーネントツリーを設定していますビューコンポーネント」は、そう状部コンポーネントに渡される観察呼ばsectionDataの$、としてセクションのリストを保持:
<section-component
*ngFor="let section of sectionData$ | async"
></section-component>
『セクション成分は、データ項目部品『』ホスト』とデータでありますそのように渡された:
<data-item-component
*ngFor="let item of section.items"
></data-item-component>
変更が発生したとき、すなわちsectionData $ .next()コンポーネント全体のツリーが更新される...変更は項目だけの1または2で発生したとしても、呼び出されました特定のセクション内でこれは、画面上にレンダリングされるデータの複雑さとサイズによって、非常に遅くなる可能性があります。
親観測値のそれぞれのサブオブジェクトが変更された場合にのみ、コンポーネントを更新できますか?
変化の検出は有望です。しかし、多くのコンポーネントのデータが含まれているobservableがあり、next()が呼び出された場合...データの一部だけが変更されても、新しいデータオブジェクトです。したがって、それに依存するすべてのコンポーネントは変更する必要がありますか? –
@AdrianTaylor:私の経験では、ドキュメントに基づいて、 observablesでsubscribeを使用し、changeDetectionが "OnPush"に設定されている場合、変更が発生したときにAngular2に通知する必要があります。これは、変更が発生したかどうかを評価して判断し、ChangeDetecorRefオブジェクトを使用してAngular2に警告することを意味します。 –
大丈夫です、私はこれをテストします.. –