模板的数据绑定与推送检测策略

时间:2016-08-25 08:06:03

标签: templates angular

我有两个组件: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,那么绑定工作正常。

1 个答案:

答案 0 :(得分:0)

使用OnPush组件仅在您调用或输入更改时才运行更改检测。

我刚刚向<message-list>添加了一个输入,并通过isTimestampVisible每次isTimestampVisible更改时都会更新。

Plunker example