簡體   English   中英

angular2中@Inputs的一次性(非單向)綁定?

[英]One-time (not one-way) binding for @Inputs in angular2?

在angular 1.x中,單向數據綁定語法是::

我正在嘗試將對象傳遞給具有一次性綁定的子組件。 孩子需要從父母那里獲取初始數據,但父母不會更改數據,也不需要知道孩子是否更改了數據。

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

我怎么一次性綁定這個?

這篇文章: angular 2一次綁定接縫,表明使用ChangeDetectionStrategy.CheckOnce可能是解決方案。

我知道這是舊的,但我偶然發現了這個問題:角度變化檢測已解釋 ,基本上說只要你使用不可變輸入和可觀察量 (這可能不是一直都是這樣,但它可能在一些有很多的大表中綁定):

  • ChangeDetectionStrategy.OnPush在組件上會使這整個組件重新呈現,只有當一些@input引用的變化(從內部或組件外)。 或者,此組件的模板中有一些事件。 勾選此plunkr我做: ChangeDetectionStrategy.OnPush更改默認,然后再次嘗試按鈕,看看有多少次的結合被調用。 如果你永遠不會改變@Input ,那么你有一次綁定是的我知道這是整個組件,而不僅僅是特定的綁定....
  • 如果您有沒有它的參考變化的變化數據,注入ChangeDetectorRef並調用markForCheck當變化發生。

我有同樣的問題。 在我的情況下足以添加一個額外的Input() set並僅在尚未設置舊值時保存新值

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

然后在html中調用[initChildData]而不是[child-data]你可以在一個組件中將它用於一個輸入,或者只是將它移動到一個抽象的BaseComponent類,使其更通用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM