Angular 同一变量的输入和输出

Angular 同一变量的输入和输出,angular,angular5,getter-setter,Angular,Angular5,Getter Setter,我有一个可以从父级和子级编辑的变量 parent.html: <div *ngIf="editEnabled"> <mat-icon (click)="disableEdit()">cancel</mat-icon> </div> <child [(editEnabled)]="editEnabled"></child> Child.html: <div *ngIf="!editEnabled">

我有一个可以从父级和子级编辑的变量

parent.html:

 <div *ngIf="editEnabled">
  <mat-icon (click)="disableEdit()">cancel</mat-icon>
</div>

<child [(editEnabled)]="editEnabled"></child>
Child.html:

 <div *ngIf="!editEnabled">
  <mat-icon (click)="enableEdit()">settings</mat-icon>
</div>
但我无法在这两个组件之间进行通信


我的错误在哪里?

在定义双绑定变量时,您需要定义一个@Input装饰符,其变量名为:

@Input() editEnabled: boolean;
还有一个@Output decorator,该decorator带有变量名,后面是
Change
,因为这个decorator会发出变量的更改事件:

@Output() editEnabledChange: EventEmitter<boolean> = new EventEmitter<boolean>();
@Output()editEnabledChange:EventEmitter=new EventEmitter();

然后在更改子组件内的变量时,调用
this.editEnabledChange.emit(true)
。您与
[(…)]
的双重绑定是正确的

如果您不想在每次更改变量时添加
editEnabledChange
-发射器
correct
,您可以编写:
\u正确:布尔值;
@输入()
设置正确(val:boolean){
此.correctChange.emit(val);
这是正确的;
}
得到正确答案{
把这个还给我;
}
@输出()
更正更改:EventEmitter=新的EventEmitter()

应该可以帮助您入门。在这种情况下,您必须使用输出decerator。您或其他人是否可以创建一个实现此功能的新注释,以便我们只需编写@InputOutput()correct:boolean???不,Angular中没有直接的方法来声明和使用组件中的输入/输出字段。这种模式对我来说很奇怪。如果我们需要再爬一个组件到爷爷奶奶那里呢?我们是否将使用EditEnabledChange?不,您仍然使用具有双重绑定的“editEnabled”。感谢您的回答。我很想看到一个事件上升到几个组件的示例,我需要对此进行调查。
@Input() editEnabled: boolean;
@Output() editEnabledChange: EventEmitter<boolean> = new EventEmitter<boolean>();