用数据动态填充Material Dashboard组件

时间:2019-05-13 18:08:41

标签: angular chart.js angular7 dashboard material

我有 @ angular / cli“:”〜7.3.8“ ” @@ angular / material“:” ^ 7.3.7“ 已安装。我开始了一个项目并将Angular Material添加到其中。之后,我安装了Nav组件,并通过以下方式将其命名为“ mynav”:

ng generate @angular/material:nav mynav

我还从Angular Material Schematics中生成了一个Dashboard组件,并通过以下方式将其称为“ mydash”:

ng generate @angular/material:dashboard mydash

现在的问题是,如何向仪表板中的卡片元素动态添加内容(例如,使用ChartJS进行的数据,每次发生机会都会更新)。

cards元素通过dash.component.ts中使用数组的函数进行组织。这是两个文件中自动生成的代码:

dash.component.ts:

import { Component } from '@angular/core';
import { map } from 'rxjs/operators';
import { Breakpoints, BreakpointObserver } from '@angular/cdk/layout';

@Component({
  selector: 'app-dash',
  templateUrl: './dash.component.html',
  styleUrls: ['./dash.component.css']
})
export class DashComponent {
  /** Based on the screen size, switch from standard to one column per row */
  cards = this.breakpointObserver.observe(Breakpoints.Handset).pipe(
    map(({ matches }) => {
      if (matches) {
        return [
          { title: 'Card 1', cols: 1, rows: 1 },
          { title: 'Card 2', cols: 1, rows: 1 },
          { title: 'Card 3', cols: 1, rows: 1 },
          { title: 'Card 4', cols: 1, rows: 1 }
        ];
      }

      return [
        { title: 'Card 1', cols: 2, rows: 1 },
        { title: 'Card 2', cols: 1, rows: 1 },
        { title: 'Card 3', cols: 1, rows: 2 },
        { title: 'Card 4', cols: 1, rows: 1 }
      ];
    })
  );

  constructor(private breakpointObserver: BreakpointObserver) {}
}

和dash.component.html:

<div class="grid-container">
  <h1 class="mat-h1">Dashboard</h1>
  <mat-grid-list cols="2" rowHeight="350px">
    <mat-grid-tile *ngFor="let card of cards | async" [colspan]="card.cols" [rowspan]="card.rows">
      <mat-card class="dashboard-card">
        <mat-card-header>
          <mat-card-title>
            {{card.title}}
            <button mat-icon-button class="more-button" [matMenuTriggerFor]="menu" aria-label="Toggle menu">
              <mat-icon>more_vert</mat-icon>
            </button>
            <mat-menu #menu="matMenu" xPosition="before">
              <button mat-menu-item>Expand</button>
              <button mat-menu-item>Remove</button>
            </mat-menu>
          </mat-card-title>
        </mat-card-header>
        <mat-card-content class="dashboard-card-content">
          <div>Card Content Here</div>
        </mat-card-content>
      </mat-card>
    </mat-grid-tile>
  </mat-grid-list>
</div>

0 个答案:

没有答案