данные, переданные компоненту MatDialogRef, не отображаются

#angular #modal-dialog #angular-material

#angular #модальный диалог #угловой материал

Вопрос:

Я следил за этой статьей: https://material.angular.io/components/dialog/examples и внес некоторые небольшие изменения, чтобы вместо этого передать объект класса.

Я убежден, что данные передаются в модальный компонент, просматривая выходные данные этого:

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

ниже приведен фрагмент кода для лучшего понимания проблемы:

Под модальным компонентом:

 @input expense: Expense;

  constructor(
    public dialogRef: MatDialogRef<ExpenseModalComponent>,
    @Inject(MAT_DIALOG_DATA) public data: Expense
    ) {
      //this.expense= data;
   }
 

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

 openModalWin(exp: Expense):void
   {
    const dialogRef = this.dialog.open(ExpenseModalComponent, {
      height: '400px',
      width: '600px',
      data: {expense: exp} 
    });
 

шаблон компонента модели:

{{expense.ExpenseID}} бла-бла-бла

если я не прокомментирую две строки кода, прокомментированные выше, модальное окно будет пустым.

Я также пытался использовать для отображения результата, который дает тот же результат.

однако, если я прокомментирую две строки кода выше… работает просто отлично.

есть идеи, почему привязка данных перестает работать, когда компонент удаляется в модальном диалоговом окне?

заранее спасибо за любые советы.

Комментарии:

1. проверьте консоль на наличие ошибок

Ответ №1:

хм… похоже, я что-то пропустил, рабочий, как показано ниже, с изменениями, выделенными жирным шрифтом

 @input expense: Expense;

  constructor(
    public dialogRef: MatDialogRef<ExpenseModalComponent>,
    @Inject(MAT_DIALOG_DATA) public data: **any**
    ) {
      **this.expense= data.expense;**
   }
 

Ответ №2:

Вы должны получить доступ к данным, которые содержат пару ключ-значение расхода, используйте это.данные для доступа к объекту в matDialogRef