无法在 _closeDialogVia dialog.mjs 中设置 null 的属性(设置“_closeInteractionType”)

问题描述 投票:0回答:1

enter image description here

将应用程序的材料迁移到 15 版本后,matdialog(内置关闭按钮)不起作用并抛出以下错误:

  • `错误类型错误:无法设置 null 的属性(设置'_closeInteractionType')
  • 在 _closeDialogVia (dialog.mjs:476:30)
  • 在 MatLegacyDialogClose._onButtonClick (legacy-dialog.mjs:287:24)
  • 在 MatLegacyDialogClose_click_HostBindingHandler (legacy-dialog.mjs:291:107)
  • 在 executeListenerWithErrorHandling (core.mjs:14037:16)
  • 在 wrapListenerIn_markDirtyAndPreventDefault (core.mjs:14070:22)
  • 在 HTMLButtonElement。 (platform-browser.mjs:455:38)
  • 在 _ZoneDelegate.invokeTask (zone.js:443:35)
  • 在 core.mjs:23946:55
  • 在 AsyncStackTaggingZoneSpec.onInvokeTask (core.mjs:23946:36)
  • 在 _ZoneDelegate.invokeTask (zone.js:442:64)
  • `

附图。

执行命令后:

  • ng generate @angular/material:mdc-migration

***Parent.compoment.ts***

  • 从'@angular/material/dialog'导入{MatDialog, MatDialogRef};
  • 公共对话:MatDialog
  • const dialogRef = this.dialog.open(EmailOptionComponent, {
  • 角色:'对话',
  • 禁用关闭:真,
  • panelClass: ['fis-style', 'panel-export-width', 'margin_35px']
  • });
    
  • dialogRef.componentInstance.emailInputOptions = this.emailOptionsData;
  • dialogRef.componentInstance.pageName = 'GAIN_LOSS_PAGE';
  • dialogRef.afterClosed().subscribe(result => {
  • 如果(结果){
  • this.EmailSend();
  •   }
    
  • });
    

***email-options.component.ts***

  • `构造函数(公共dialogRef:MatDialogRef,私人emailSandbox:EmailSandbox,私人商店:Store){}
  • confirmDialog = () => {
  • this.dialogRef.close(true);
  • }``
    

上面的代码不起作用。它应该可以正常工作而不会抛出任何错误

angular angular-material angular-material2
1个回答
0
投票

没有格式的代码很难阅读,有一个选项可以正确发布它。 好像是没有打开的Dialog要关闭。 您可以像这样触发从孩子到父母的关闭事件:

孩子 ts:

import { EventEmitter, Output } from '@angular/core';
    export class MyChildComponent {
    @Output() onCloseDialog: EventEmitter<boolean> = new EventEmitter();
      
    // ...
}

儿童 html:

<button (click)="onCloseDialog.emit(true)">Close dialog</button>

父html:

<app-my-child (onCloseDialog)="closeDialog($event)"></app-my-child>

家长 ts:

closeDialog($event: boolean) {
  if ($event) {
    this.dialogRef.close();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.