【问题标题】:Unable to place mat-grid-list and mat-list inside mat-dialog-content无法在 mat-dialog-content 中放置 mat-grid-list 和 mat-list
【发布时间】:2020-04-09 20:57:57
【问题描述】:

更新: stackbliz https://angular-2wqf4b.stackblitz.io


我正在构建一个比较屏幕,我们可以在其中比较两个项目。我试图在mat-grid-list 内将这两个项目显示为两个mat-cards。这两个项目还有一个要比较的属性列表,我试图使用*ngFor 将其放入mat-list 中。

我的问题是dialog 没有显示我的数据的全尺寸。如果我放置静态内容,例如任何标签内的一些文本,例如<p> dialog 会自动调整并变为全尺寸,如官方网站here 所示。

如果我不给任何自定义CSS 我的dialog 看起来像这样:

如果我将自定义CSS 放在下面(我尝试将这个CSS 放在不同的元素上,但无法获得令人满意的结果):

mat-grid-list {
   min-height: 80vh;
   width: 88vw;
}

dialog 看起来像这样(我检查了这些项目以表明它们超出了 dialog 并且我无法向上滚动以查看列表的顶部元素) :

以下是我的dialog 的 HTML。我准备好更改对话框的内部元素,只要它们在dialog 中显示得很好。

<h2 mat-dialog-title>Compare</h2>
<mat-dialog-content class="mat-typography"> 
    <mat-grid-list  cols="2">
        <mat-grid-tile>
            <mat-card class="example-card">
              <mat-card-header>
                <img mat-card-avatar [src]="item.image" alt="item.name">
                <mat-card-title>{{item.name}}</mat-card-title>
                <mat-card-subtitle>display discription</mat-card-subtitle>
              </mat-card-header>
              <mat-card-content>
               <mat-list>
                  <h3 mat-subheader>Amenities</h3>
                  <mat-list-item *ngFor="let attribute of item.attributes">
                    <mat-icon mat-list-icon>folder</mat-icon>
                    <h4 mat-line>{{attribute.name}}</h4>
                  </mat-list-item>
                  <mat-divider></mat-divider>
                  <h3 mat-subheader>Activities</h3>
                  <mat-list-item *ngFor="let activity of item.activities">
                    <mat-icon mat-list-icon>note</mat-icon>
                    <h4 mat-line>{{activity.name}}</h4>
                  </mat-list-item>
                </mat-list>
              </mat-card-content>
            </mat-card>
        </mat-grid-tile>
        <mat-grid-tile>
            <mat-card class="example-card">
              <mat-card-header>
                <!-- <img mat-card-avatar [src]="item.image" alt="itmem.name"> -->
                <mat-card-title>{{item.name}}</mat-card-title>
                <mat-card-subtitle>display discription</mat-card-subtitle>
              </mat-card-header>
              <mat-card-content>
              </mat-card-content>
            </mat-card>
        </mat-grid-tile> 
    </mat-grid-list> 
</mat-dialog-content>
<mat-dialog-actions align="end">
    <button mat-button mat-dialog-close>Cancel</button>
</mat-dialog-actions>

【问题讨论】:

  • 你可以尝试在 stackblitz 上创建一个示例演示
  • 当然,正在努力。
  • @Allabakash,用链接更新了问题:angular-2wqf4b.stackblitz.io
  • 它们需要并排显示吗?还是顶部和底部?
  • 并排,在我的示例中,我现在只填充了一侧...您可以假设第二个。

标签: angular angular-material


【解决方案1】:

要全屏显示对话框,您需要设置对话框的高度和宽度,如下所示。

const dialogRef = this.dialog.open(DialogContentExampleDialog, {
      width: '120%',
      height: '100%'
    });

为了并排显示 div,

<mat-grid-list cols="2" rowHeight="1:2">

这里是演示 - https://angular-2wqf4b-hasjzk.stackblitz.io/

代码 - https://stackblitz.com/edit/angular-2wqf4b-hasjzk

希望这会有所帮助。

【讨论】:

  • 感谢您的时间和努力。但是,我之前已经尝试过,并且在问题中也提到过。您的回答实际上是我的第二个屏幕截图。我仍然看不到顶级元素。我注意到的一件事是mat-dialog-actions 实际上不在对话框的底部,这可能会将内容推向顶部。我现在正在努力。
  • 我可以在我附加的演示中滚动并且对齐看起来很好,我已经附加了屏幕截图,所以这不是你所期望的吗?
  • 这很接近,但对 UX 不友好。你看,在大屏幕上,它是可见的。但是,在较小的屏幕上,它甚至无法滚动。
猜你喜欢
  • 2021-10-31
  • 2018-12-20
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
  • 2019-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多