Угловой набор @inputs и доступ @outputs от несвязанного компонента - PullRequest
1 голос
/ 20 июня 2019

У меня есть компонент динамической таблицы (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.
      });
  }

Компонент отображается в моем диалоговом окне, как и ожидалось, но он явно не содержит данных.

Как я могу получить доступ к своим DataTableComponent @inputs и @output из этого метода openDialog ()? Мне нужно иметь возможность установить данные @inputs и получить при запуске метода @output. Это не возможно? Или есть лучший способ сделать это? Я проверил инжекторы, но не смог заставить работать реализацию.

1 Ответ

2 голосов
/ 20 июня 2019

Вам нужно будет связаться с ними через Сервис:
https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service
поскольку между ними нет прямой связи, вы можете внедрить сервис в оба,
и вызвать наблюдаемое из одного,
слушать изменения во втором;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...