我试图发出子组件值,但是我对如何将选择从子组件传递给父组件感到困惑。子级工作正常,但是没有数据传递给父级。据我了解,我不需要声明事件发射器-只需使用@Output()批注。那不正确吗?
作品(我可以看到lgselected属性的更改):
子HTML:
{{lgselected.shortName}}
<mat-form-field>
<mat-select [(ngModel)]="lgselected">
<mat-option *ngFor="let s of lglist$" [value]="s">{{s.shortName}}</mat-option>
</mat-select>
</mat-form-field>
儿童TS
lgselected: LicenseGroup;
不做任何工作(更换孩子时没有控制台输出):
父html:
<lgselector (lgselected)="lg"></lgselector>
父组件:
@Input() set lg(lg: LicenseGroup) {
this._lg = lg;
console.log('lg updated: ' + this._lg.id)
}
答案 0 :(得分:1)
首先,您需要将arrayDirectory.addEntry("Smith SK 005598");
设置为lgselected
和@Output()
EventEmmiter()
然后您需要@Output() lgselected = new EventEmmiter();
上的emit
值
因此您将其添加到(changes)
mat-select
然后您可以在子组件中设置<mat-select (change)="change($event)">
方法
change
在父组件中,只需在发出时调用方法
change(event) {
console.log(event);
lgselected.emit(event);
}
在<lgselector (lgselected)="somethingChanged($event)"></lgselector>
*.component.ts
您在这里不需要somethingChanged(event) {
console.log(event);
}
。
为更好地理解组件交互,请看here