[英]Angular - Two Way Binding
我是 Angular 的初學者,我介紹了兩種方式綁定,但由於某種原因,我不明白我在下面做錯了什么,任何輸入都將不勝感激。
我只是想理解這個概念,所以下面的代碼相當簡單。 據我了解
<app-child-comp>
我將父字段“名稱”從父組件傳遞到父視圖,並使用屬性綁定為子組件提供初始化值(默認值)接收@Input 字段中的值。問題:
現在這是我的問題,父->子方向綁定按預期工作,名稱“Fin”出現在父模板的輸入和子模板的插值中,但當我想改變子模板中的名稱並將其冒泡到父屬性,盡管它更新了子模板中的插值,但它無法更新。
我已經嘗試解決這個問題一段時間了,我正在研究的所有內容都說我做對了,但如果你能解釋一下我做錯了什么,我將不勝感激。
我添加了這個,以便未來的任何人都可以從我的錯誤中吸取教訓。
給定子組件,有兩種方法可以執行事件綁定
第一種方法是通過如下顯式聲明屬性和事件綁定<app-child-comp [childName]="name" (childNameChange)="name =$event"></app-child-comp>
第二種方法是使用“香蕉盒”方法,其中子標簽轉換為<app-child-comp [(childName)]="name"></app-child-comp>
我試圖使用第二種方法,但不清楚的是,當涉及到子組件中的字段名稱時,需要遵循一個命名約定才能使“香蕉方法”起作用
規則:如果您的@Input 字段被命名為“x”,那么您的@Output EventEmitter 需要被命名為“xChange”,“Change”是名稱的第二部分。
語法:輸入名稱 + 更改
因此,為了解決我的問題,我需要更改命名約定
@Input() childName:string;
@Output() changedName = new EventEmitter<string>();
至
@Input() childName:string;
@Output() childNameChange = new EventEmitter<string>();
您必須在根組件中添加 output :
<app-child-app [(childName)]="name" (changedName)="name = $event"></app-child-app>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.