cuc*_*uru 10 getter-setter angular angular5
我有一个可以从父母和孩子编辑的变量.
parent.html:
<div *ngIf="editEnabled">
<mat-icon (click)="disableEdit()">cancel</mat-icon>
</div>
<child [(editEnabled)]="editEnabled"></child>
Run Code Online (Sandbox Code Playgroud)
parent.ts:
export class ParentComponent {
editEnabled: boolean;
disableEdit(){
this.editEnabled = false;
}
}
Run Code Online (Sandbox Code Playgroud)
Child.html:
<div *ngIf="!editEnabled">
<mat-icon (click)="enableEdit()">settings</mat-icon>
</div>
Run Code Online (Sandbox Code Playgroud)
child.ts
private _editEnabled: boolean;
@Input()
set editEnabled(value: boolean) {
this._editEnabled = value;
}
get editEnabled(): boolean {
return this._editEnabled;
}
enableEdit(){
this.editEnabled = true;
}
Run Code Online (Sandbox Code Playgroud)
但我不能在两个组件之间通信editEnabled.
我的错误在哪里?
Gia*_*Voß 17
定义双键变量时,需要使用变量名定义一个@ Input-decorator:
@Input() editEnabled: boolean;
Run Code Online (Sandbox Code Playgroud)
和一个带有变量名的@ Output-decorator Change
然后,因为这个发出变量的变化事件:
@Output() editEnabledChange: EventEmitter<boolean> = new EventEmitter<boolean>();
Run Code Online (Sandbox Code Playgroud)
然后在更改子组件内的变量时,调用this.editEnabledChange.emit(true)
.你的双重绑定[(...)]
是正确的!
如果不想editEnabledChange
每次更改变量correct
时都添加-Emitter ,则可以编写:
_correct: boolean;
@Input()
set correct(val: boolean) {
this.correctChange.emit(val);
this._correct = val;
}
get correct() {
return this._correct;
}
@Output()
correctChange: EventEmitter<boolean> = new EventEmitter<boolean>();
Run Code Online (Sandbox Code Playgroud)
<app-pin [(correct)]="isPinCorrect"></app-pin>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4467 次 |
最近记录: |