【问题标题】:How is the mat-spinner rendered inside the mat-table?mat-spinner 如何在 mat-table 内呈现?
【发布时间】:2019-12-05 08:59:07
【问题描述】:

我想知道为什么/如何在 table in this example 中渲染材质微调器:

    <div class="course">

        <div class="spinner-container" *ngIf="dataSource.loading$ | async">
            <mat-spinner></mat-spinner>
        </div>

        <mat-table class="lessons-table mat-elevation-z8" [dataSource]="dataSource">
            ....
        </mat-table>
    </div>

表格没有引用微调器,那么它是如何在内容区域内渲染的呢?

【问题讨论】:

    标签: javascript angular typescript angular-material


    【解决方案1】:

    它不是在 mat-table 内渲染 mat-spinner,只是使用与 table body 相同的 css。似乎微调器在表内,但实际上并非如此,即使在加载数据源时,表的标题也存在。通过将与表体相同的 css 分配给微调器容器,微调器似乎在表体中:

    <div class="spinner-container" *ngIf="dataSource.loading$ | async">
         <mat-spinner></mat-spinner>
    </div>
    

    css:

    .spinner-container {
      display: flex; 
      justify-content: center; 
      align-items: center; 
      background-color: #fafafa; 
      box-shadow:0 5px 5px -3px rgba(0,0,0,.2), 0 8px 10px 1px rgba(0,0,0,.14), 0 3px 14px 2px rgba(0,0,0,.12)
    }
    

    DEMO.

    【讨论】:

    • OK - 所以 IIUC 微调器位于桌子下方,它会被渲染,直到内容可用,然后微调器被隐藏并且表格行显示……这就是魔法……跨度>
    • 创建了一个 stackblitz fork,它将微调器永久留在原地并移除数据渲染,因此我们可以看到 CSS 正在做什么:stackblitz.com/edit/angular-datatable-spinner?file=app/…
    猜你喜欢
    • 1970-01-01
    • 2020-02-23
    • 2020-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多