将 Angular 更新到版本 9 后 MatDialog 停止工作

She*_*ahu 5 ivy angular-material angular material-dialog

我有一个 Angular 项目,按照https://update.angular.io/#7.2:9.0从 7.2 升级到 9

升级后,除 MatDialog 之外的所有内容均正常工作。打开该对话框会显示一个大小不成比例的空弹出窗口,并在控制台中显示以下错误。

core.js:3866 ERROR Error: Uncaught (in promise): TypeError: Cannot read property "hasAttached" of undefined
TypeError: Cannot read property "hasAttached" of undefined
    at MatDialogContainer.push../node_modules/@angular/material/esm5/dialog.es5.js.MatDialogContainer.attachComponentPortal (dialog.es5.js:191)
    at MatDialog.push../node_modules/@angular/material/esm5/dialog.es5.js.MatDialog._attachDialogContent (dialog.es5.js:1046)
    at MatDialog.push../node_modules/@angular/material/esm5/dialog.es5.js.MatDialog.open (dialog.es5.js:850)
    at new AppComponent (app.component.ts:67)
    at createClass (core.js:22218)
    at createDirectiveInstance (core.js:22087)
    at createViewNodes (core.js:30632)
    at createRootView (core.js:30546)
    at callWithDebugContext (core.js:31554)
    at Object.debugCreateRootView [as createRootView] (core.js:31064)
    at resolvePromise (zone.js:836)
    at resolvePromise (zone.js:795)
    at zone.js:897
    at ZoneDelegate.invokeTask (zone.js:431)
    at Object.onInvokeTask (core.js:27441)
    at ZoneDelegate.invokeTask (zone.js:430)
    at Zone.runTask (zone.js:198)
    at drainMicroTaskQueue (zone.js:611)
    at ZoneTask.invokeTask [as invoke] (zone.js:517)
    at invokeTask (zone.js:1671)
Run Code Online (Sandbox Code Playgroud)

我已经从本教程 https://www.techiediaries.com/angular-material-dialogs/中验证了使用自定义组件的对话框的方式是相同的。由于工作政策,我无法提供实际的代码。

我还尝试根据此链接选择退出常春藤思考是否是问题的原因。但这没有帮助。

你们中有人也遇到过类似的问题吗?

小智 4

问题解决了。我必须将 Angular Material CDK 升级到 9.1 并将所有导入引用更改为新格式:

import { MatDialogModule } from '@angular/material/dialog';
Run Code Online (Sandbox Code Playgroud)

现在一切都好啦!