我有两个组件:list和item,并使用<template>
为列表设置项呈示器:
<chat-message-list [messages]="messages | async">
<template>
<chat-message [isTimestampVisible]="isTimestampVisible | async"></chat-message>
</template>
</chat-message-list>
列表和消息都在推送检测策略(ChangeDetectionStrategy.OnPush
)上使用。
在我使用<template>
设置项呈示器isTimestampVisible
之前,属性已正确绑定。当我使用<template>
isTimestampVisible
属性时,更改后不再刷新。我不想使用默认检测策略,因为我使用React获得了不可变模型。
当我将Observable
传递给<chat-message>
而不是布尔值时,它正常工作,但<chat-message>
是我的“哑”组件,所以它不应该接收Observable - 只是纯值。
http://plnkr.co/edit/4qUDeOBoMmUsuRsBx2w9?p=preview
如果您在ChangeDetectionStrategy.OnPush
中将ChangeDetectionStrategy.Default
更改为message-list.ts
,那么绑定工作正常。
答案 0 :(得分:0)
使用OnPush
组件仅在您调用或输入更改时才运行更改检测。
我刚刚向<message-list>
添加了一个输入,并通过isTimestampVisible
每次isTimestampVisible
更改时都会更新。