Angular Материал: Всплывающее окно: отправка данных родителю, когда окно открыто и при нажатии кнопки - PullRequest
0 голосов
/ 09 июля 2020

Как мне получить значение диалогового окна Angular Материал и отправить его родителю?

Я знаю, как получить данные после закрытия диалогового окна. Просто любопытно, как получить данные, пока диалоговое окно все еще открыто, или, в частности, когда человек нажимает кнопку в диалоговом окне.

public openPropertySearchDialog(): void {
  const propertySearchDialogRef = this.propertySearchDialog.open(PropertyGridDialogComponent, 
  {
     width: '1500px',
     height: '950px',
     data: this.propertyList,
     hasBackdrop: false
   });
  
   propertySearchDialogRef.afterClosed().subscribe(result => {
     console.log('propertyResult', result);
   });
}

Обновление:

Это будет подписаться на данные. Теперь мне нужно знать только данные, когда кнопка нажата внутри компонента Dialog. Подумываю о добавлении другой подписки для события нажатия кнопки, ищем чистый способ вместо добавления двух подписок.

propertySearchDialogRef .componentInstance.propertyOutput.subscribe((data: any) => {
  console.log('test',data);
});

https://material.angular.io/components/dialog/api

Многие ресурсы в Интернете доступны когда окно закрыто, ищем Open и нажимаем кнопку (которая не закрывает диалоговое окно)

Как передать данные в afterClosed () в Angular Диалог материала в Angular 6

Передача нескольких данных из диалогового окна Mat Angular 4 обратно родительскому элементу

1 Ответ

1 голос
/ 09 июля 2020

В вашем всплывающем компоненте вы можете использовать эмиттер событий вывода.

  onAdd = new EventEmitter();
  constructor() {
    
  }
  
  onButtonClicked() {
    this.onAdd.emit('test');
  }

Внутри родительского компонента

  openDialog() {
      const ref = this._dialog.open(InnerComponent);
      const sub = ref.componentInstance.onAdd.subscribe((data) => {
        console.log(data);
      });
      dialogRef.afterClosed().subscribe(() => {
        sub.unsubscribe();
      });
  }

Здесь вы подписываетесь на событие onAdd.

событие генерируется только при нажатии кнопки, на вашей кнопке (click) событие, вызов onButtonClicked() -

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