我有一个可以从父项和子项编辑的变量。
Pr.HTML:
<div *ngIf="editEnabled">
<mat-icon (click)="disableEdit()">cancel</mat-icon>
</div>
<child [(editEnabled)]="editEnabled"></child>
帕伦茨:
export class ParentComponent {
editEnabled: boolean;
disableEdit(){
this.editEnabled = false;
}
}
Child.html:
<div *ngIf="!editEnabled">
<mat-icon (click)="enableEdit()">settings</mat-icon>
</div>
孩子们
private _editEnabled: boolean;
@Input()
set editEnabled(value: boolean) {
this._editEnabled = value;
}
get editEnabled(): boolean {
return this._editEnabled;
}
enableEdit(){
this.editEnabled = true;
}
但我无法在两个组件之间进行editenabled通信。
我的错误在哪里?
最佳答案
在定义双绑定变量时,需要使用变量名定义一个@input decorator:
@Input() editEnabled: boolean;
还有一个@output decorator,变量名在其后面,因为这一个发出变量的更改事件:
@Output() editEnabledChange: EventEmitter<boolean> = new EventEmitter<boolean>();
然后在更改子组件中的变量时,调用
Change
。您与this.editEnabledChange.emit(true)
的双重绑定是正确的!