1

在从 Angular 5 迁移到 6 之后,现在在我们的项目中,我们有一个奇怪的行为。

我们犹豫在 Material 项目或 Angular cli 中打开这个问题。

我们的依赖是:

"dependencies": {
"@angular/animations": "^6.0.6",
"@angular/cdk": "^6.3.3",
"@angular/common": "^6.0.6",
"@angular/compiler": "^6.0.6",
"@angular/core": "^6.0.6",
"@angular/flex-layout": "6.0.0-beta.16",
"@angular/forms": "^6.0.6",
"@angular/http": "^6.0.6",
"@angular/material": "^6.3.3",
"@angular/platform-browser": "^6.0.6",
"@angular/platform-browser-dynamic": "^6.0.6",
"@angular/router": "^6.0.6",
....
}


"devDependencies": {
"@angular-devkit/build-angular": "~0.6.8",
"@angular/cli": "^6.0.8",
"@angular/compiler-cli": "^6.0.6",
"@angular/language-service": "^6.0.6",
 .....
"ts-node": "~3.2.0",
"tslint": "~5.7.0",
"typescript": "~2.7.2"
}

在开发模式下,使用“ng serve”一切正常,但在使用“ng serve --prod”的 prod 模式下,我们遇到了问题。

- 第一个问题是,Firefox 浏览器(52.8.0)中的所有“mat-select”都没有正确显示。

mat select 的内容显示在页面底部(此行为仅存在于 firefox 中)。

经过一番调查,我们发现“cdk-overlay-pane”类在 DEV 和 PROD 中是不同的。

  • 在开发中“cd​​k-overlay-pane”有一个属性“top :202.094px”
  • 在产品“cdk-overlay-pane”中有一个属性“底部:-204.134px”(这会导致问题)。

- 第二个问题是,只有 prod 模式下,材质对话框无法正确显示在 chrome 中。

使用以下配置:

const dialogRef = this.dialog.open(UserKillSessionsDialogComponent, {
 width: '500px',
 data: this.currentUser
});

在开发中,对话框正确显示

在 prod 中,对话框没有正确显示,它占据了页面的所有高度。

在迁移之前,如果没有“高度”配置,对话框的高度会动态获取内容的高度。

现在,高度配置仅在 prod 模式下是强制性的(并且仅在 chrome 中)。

非常感谢您的帮助。

4

0 回答 0