[英]Re-render Angular2 component when property is changed
可以說我有以下情況:
@Component({
selector: 'my-app',
template: `
<my-component
[myAttr]="myAttr"
></my-component>
<button (click)="onClick()">Click</button>
`,
directives: [MyComponent]
})
class AppComponent {
myAttr: number = 1;
onClick() {
this.myAttr += 1;
}
}
因此,當單擊按鈕時,我想重新渲染組件,以便在基礎組件上填充新值。 我也嘗試了兩種方式的綁定,但是在這種情況下它沒有多大意義,因為它是一種單向綁定。 所以問題是如何觸發更新?
謝謝!
您無需觸發任何操作。 由於Angular更改檢測的工作方式,更新自動發生。
Angular Monkey修補了在Angular“區域”中定義的所有異步事件(例如您的(click)
事件綁定),因此在onClick()
事件處理程序完成后,Angular將自動運行更改檢測。
更改檢測將注意到myAttr
綁定到MyComponent
的輸入屬性,它將自動將新值傳播到子組件。 更改檢測還將注意到(如果使用Thierry的示例)屬性myAttr
已綁定到div
,它將自動將新值傳播到div
的textContent
屬性。 角度更改檢測完成,然后瀏覽器會注意到DOM更改並更新您在屏幕上看到的內容。
您對此是正確的,但是還有另外一件事-應該使用哪個事件來檢測子組件中的此更改以執行某些邏輯。 我可以看到例如觸發了ngAfterContentCheck事件,但是它多次觸發,我似乎無法弄清原因。
還有一件事-我可以從子組件中推送更新。 因此,例如,當子組件中的某些更改(來自用戶輸入或類似內容)發生變化時,控制myAttr的my-app組件將被更新。 我在這里考慮React的方式,所以我不確定這是正確的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.