как передать observable из angular bottomsheet в родительский компонент

#angular #angular-material

#angular #angular-material

Вопрос:

Мне нужно передать данные из angular material bottomsheet в его родительский компонент.

Например, у нас есть [mat-dialog-close] директива в angular material dialog component, где мы можем передавать данные из dialog в parent, как указано в https://material.angular.io/components/dialog/api#MatDialogClose

диалог html:

 <button [mat-dialog-close]="'dataWhichNeedsToBePassed'" cdkFocusInitial>Ok</button>
  

и получить в родительском компоненте как:

 dialogRef.afterClosed().subscribe(result => {
  console.log(result); //dataWhichNeedsToBePassed
});
  

аналогично, мне нужно передать данные из bottomsheet в родительский компонент (откуда был вызван bottomsheet).

Похоже, что в нет предопределенной директивыhttps://material.angular.io/components/bottom-sheet/api

что может быть лучшим решением здесь.

Ответ №1:

вы можете использовать его так же, как mat dialog

 this._bottomSheet.open(BottomSheetOverviewExampleSheet)
.afterDismissed().subscribe((result) => {
   console.log(result);
   console.log('Bottom sheet has been dismissed.');
 }); 
  

пример: stackblitz

Ответ №2:

Я получил свой ответ от .dismiss() функции. Просто нужно передать данные из этой функции dismiss

bottomsheet.html:

<button (click)="confirmDelete()">Delete<button>

bottomsheetComponent:

 confirmDelete(): void {
  this._bottomSheetRef.dismiss('Deleted');
  event.preventDefault();
}
  

родительский компонент:

 MatBottomSheetRef.afterDismissed().subscribe(result => {
  console.log('bottomsheet was closed');
  console.log(result); //Deleted
});