Angular Child组件未将结果发送给父级

时间:2019-03-24 23:09:24

标签: angular

我试图发出子组件值,但是我对如何将选择从子组件传递给父组件感到困惑。子级工作正常,但是没有数据传递给父级。据我了解,我不需要声明事件发射器-只需使用@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)
}

1 个答案:

答案 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