angular2中@Inputs的一次性(非单向)绑定?

时间:2015-10-25 07:07:52

标签: angular

在angular 1.x中,单向数据绑定语法为::

我试图通过一次性绑定将对象传递给子组件。孩子需要从父母那里获得初始数据,但父母不会改变数据,也不需要知道孩子是否改变了数据。

<parent [child-data]="childData"/>

我怎样才能一次性绑定它?

3 个答案:

答案 0 :(得分:1)

此帖子:angular 2 one time binding接缝表示使用 ChangeDetectionStrategy.CheckOnce 可能是解决方案。

答案 1 :(得分:1)

我知道这已经过时了,但我偶然发现了这个问题:ANGULAR CHANGE DETECTION EXPLAINED基本上只要你使用不可变输入和可观察信息(这可能并非总是如此) ,但它可能在一些有很多绑定的大表中):

    组件上的
  • ChangeDetectionStrategy.OnPush 仅在某些@Input引用发生更改(从组件内部或外部)时才会使整个组件重新呈现。或者,此组件的模板中有一些事件。检查我做的这个plunkr:ChangeDetectionStrategy.OnPush更改为默认值,然后再次尝试按钮,查看绑定的调用次数。 如果你从未改变@Input,那么你有一次约束是的我知道这是整个组件,不仅仅是针对特定的绑定......
  • 如果您的数据在没有引用变化的情况下发生变化,请在发生更改时注入 ChangeDetectorRef 并调用 markForCheck

答案 2 :(得分:0)

我有同样的问题。就我而言,足以添加一个额外的Input() set并仅在尚未设置旧值的情况下保存新值

 @Input() set initChildData(initChildData: any) {
        if (initChildData && this.childData == undefined) {
            this.childData = initChildData;
        }
    }

然后用html调用[initChildData]而不是[child-data] 您可以在一个输入中使用一个组件,也可以将其移到抽象的 BaseComponent 类中,使其更加通用