javascript - MatDialog 水平居中,宽度为 100%,maxWidth 固定
问题描述
我正在尝试将具有固定宽度的 MatDialog 水平居中:
let dialog = this.dialog.open(EditVisitPopupComponent,
{ data: { visit: this.visit }, width: '100%', maxWidth: '500px' });
出于某种原因,添加width
参数会justify-content: flex start
在我希望它保留的同时将内联添加到父叠加层justify-content: center
。
我知道创建模态的方法,包括创建一个Overlay
并将组件注入其中。但我不明白为什么我不能简单地使用MatDialog
.
我试过的:
let dialog = this.dialog.open(EditVisitPopupComponent,
{ data: { visit: this.visit }, position: this.overlay.position().global().centerVertically().centerHorizontally(), width: '100%', maxWidth: '500px' });
但类型不匹配。
我也尝试了backdropClass
一个兄弟 CSS 选择器,但我没有得到想要的结果。
我错过了什么?有没有办法配置Overlay
a MatDialog
?
解决方案
在尝试将材料内部类MatDialogContainer
用于我自己的目的之后,我设法摆脱了MatDialog
并且能够创建我自己的对话框,并Overlay
在我放置position: this.overlay.position().global().centerVertically().centerHorizontally()
.
但我得到了完全相同的结果!
然后我阅读了GlobalPositionStrategy源代码,我发现 Angular Material 贡献者没有考虑width: 100%; max-width:...px;
用例,因为有一个丑陋的
if (config.width === '100%') {
parentStyles.justifyContent = 'flex-start';
}
然后我回滚到MatDialog
解决方案并输入width: 'calc(100%)'
,即使丑陋,它也像一个魅力,最终让我得到了预期的结果。
更新 v9.1.0 (01-2020)
这个错误终于被修复了,添加了一些逻辑(基于width
and )来maxWidth
确定应该包含什么。有关相关提交的更多详细信息:https ://github.com/angular/components/commit/9f2c93725e973e2c76e3308a72c5bd14f5ec483calign-items
justify-content
推荐阅读
- ios - 如何在 iOS 模拟器中查看文档目录?
- elasticsearch - Elasticsearch:通配符搜索不适用于文本字段
- batch-file - 使用 ffprobe 的批处理脚本
- node.js - 如何通过匹配 ObjectId 字段从嵌套数组中删除对象
- docker - 在为 Microsoft SQL 存储过程构建 docker 映像时,我超出了最大深度
- python - 在 CreateView 中将 Django ForeignKey 显示为 Textarea
- jhipster - 为什么实体的 Angular 组件和模块类名称以应用程序基名称为前缀?
- rest - REST 检查资源是否存在,服务器端如何处理?
- javascript - 如何在 JavaScript 或 jQuery 中从另一个域的 iframe 获取元素?
- c++ - 为什么 0 在 C++ 中打印为最重要的数字