[英]update @Input property from child not updating parent
我想更新子項的 @Input 屬性並使更改對父項生效。
父 TS(文檔詳細信息):
export class DocumentDetailsComponent implements OnInit {
view: string = 'editor';
}
父 HTML(文檔詳細信息):
<document-content [(view)]="view" ></document-content>
子 TS(文檔內容):
export class DocumentContentComponent implements OnInit, OnChanges {
@Input() view: string;
ngOnChanges(changes: SimpleChanges) {
if (changes.version) {
this.view = 'editor';
}
}
}
當子組件內的視圖屬性設置為頂部“編輯器”時,它似乎並未反映父組件內的這些更改。
我知道我可以使用 @Ouput 事件發射器,但我覺得這應該可以正常工作。
如果您希望來自@Input
的更改影響父級,這意味着您希望您的@Input
也是一個@Output
,這稱為two-way binding
,您可以在此處找到相關文檔。
但總而言之,在角度上會發生什么:
<document-content [(view)]="view" ></document-content>
這是語法糖:
<document-content [view]="view" (viewChange)="view=$event" ></document-content>
因此,為了讓您的代碼正常工作,您需要創建 viewChange 輸出並在您的代碼更改視圖屬性時調用 emit()。
@Input() view: string;
@Output() viewChange = new EventEmitter<string>();
ngOnChanges(changes: SimpleChanges) {
if (changes.version) {
this.view = 'editor';
this.viewChange.emit(this.view);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.