Пользовательский пустой экран для ng2-чартов - PullRequest
1 голос
/ 09 мая 2019

Я работаю над Линейной диаграммой в ng2-диаграммах . Я пытаюсь показать график, если есть данные, а если нет, я хочу показать No Data Available вместо пустого графика.

HTML

<div style="display: block;" *ngIf="lineChartData">
  <canvas  baseChart width="400" height="400"
    [datasets]="lineChartData"
    [labels]="lineChartLabels"
    [options]="lineChartOptions"
    [colors]="lineChartColors"
    [legend]="lineChartLegend"
    [chartType]="lineChartType"
    [plugins]="lineChartPlugins">
  </canvas>
</div>

TS

public lineChartData: ChartDataSets[] = [
    { data: [65, 59, 80, 81, 56, 55, 40], label: 'Series A' },
];
public lineChartLabels: Label[] = ['January', 'February', 'March', 'April', 'May', 'June', 'July'];

Оформить заказ Stackblitz

Ответы [ 2 ]

1 голос
/ 09 мая 2019

Вы должны проверить переменную длину данных, как

HTML

<div style="display: block;" *ngIf="lineChartData[0]['data'].length">
  <canvas baseChart width="400" height="400"
    [datasets]="lineChartData"
    [labels]="lineChartLabels"
    [options]="lineChartOptions"
    [colors]="lineChartColors"
    [legend]="lineChartLegend"
    [chartType]="lineChartType"
    [plugins]="lineChartPlugins">
  </canvas>
</div>

<div *ngIf="lineChartData[0]['data'].length === 0 ">
  No Data Available
</div>

ц

export class AppComponent  {
  public lineChartData: ChartDataSets[] = [
    { data: [], label: 'Series A' },
  ];
}
1 голос
/ 09 мая 2019

Вы можете использовать *ngIf s else block :

<div style="display: block;" *ngIf="lineChartData; else elseBlock">
  <canvas baseChart width="400" height="400"
    [datasets]="lineChartData"
    [labels]="lineChartLabels"
    [options]="lineChartOptions"
    [colors]="lineChartColors"
    [legend]="lineChartLegend"
    [chartType]="lineChartType"
    [plugins]="lineChartPlugins">
  </canvas>
</div>
<ng-template #elseBlock>No Data Available.</ng-template>

Демонстрация Stackbliz здесь .

Если lineChartData может быть просто пустым ([]), и в этом случае вы также хотите скрыть график, вы можете использовать:

<div style="display: block;" *ngIf="lineChartData && lineChartData.length; else elseBlock">

Демонстрация Stackblitz 2 здесь.

И / или, если вы также хотите защитить переменную data, выполните:

<div style="display: block;" *ngIf="lineChartData && lineChartData.length && lineChartData[0].data.length; else elseBlock">

Демо здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...