角度设置@inputs和从不相关组件访问@outputs

时间:2019-06-20 15:06:48

标签: angular angular-material

我有一个动态表组件(DataTableComponent),它接受各种@inputs并包含一个@output:

<app-data-table (buttonClickedEvent)="buttonClickedEvent($event)" [data]="testTableSetup.data" [mutatorArray]="testTableSetup.mutatorArray" [hiddenProps]="testTableSetup.hiddenProps" [showSelectColumn]="testTableSetup.showSelectColumn" [showEditColumn]="testTableSetup.showEditColumn"
[actionButtons]="testTableSetup.actionButtons">
</app-data-table>

我还有一个动态对话框组件,该组件可以带有可选参数,因此我可以传入其他组件以在其中显示:

openDialog(): void {
    const dialogConfig = new MatDialogConfig();
    let dialogConfigModel: DialogConfigModel = {
      dynamicFormModel: [],
      additionalComp: DataTableComponent,
      click_ButtonText: "Save",
      close_ButtonText: "Close",
      dialogTitle: "SOME TITLE"
    };
    dialogConfig.data = dialogConfigModel;

    const dialogRef = this._dialog.open(DynamicDialogComponent, dialogConfig);

    dialogRef
      .afterClosed()
      .pipe(
        take(1),
        takeUntil(this._destroyed$)
      )
      .subscribe(results => {
        // Stuff Here.
      });
  }

该组件确实按预期显示在我的对话框中,但是显然没有数据。

如何从此openDialog()方法中访问DataTableComponent @inputs和@output?我需要能够设置@inputs数据并在触发@output方法时获取。这不可能吗?还是有更好的方法来做到这一点?我已经检查了喷油器,但无法使实施工作。

1 个答案:

答案 0 :(得分:2)

您将需要通过服务与他们进行沟通:
https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service
由于它们之间没有直接关系,因此您可以在两者中注入服务,
并触发一个可观察的物体,
聆听第二个变化;)