iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 28
0
Modern Web

Angular10 實作教學系列 第 28

NG10鐵人賽 - 28 - ng2-charts github 樣板實作

  • 分享至 

  • xImage
  •  

chart-color.service.ts

import { Injectable } from '@angular/core';
import { ChartOptions } from 'chart.js';
import { ThemeService } from 'ng2-charts';

// 搬到外面,在 class 內會一直錯誤
type Theme = 'light-theme' | 'dark-theme';

@Injectable({
    providedIn: 'root'
})
export class ChartColorService {

    onstructor(private themeService: ThemeService) { }

    private _selectedTheme: Theme = 'light-theme';

    setCurrentTheme(theme: Theme): void {
        this.selectedTheme = theme;
    }

    public get selectedTheme() {
        return this._selectedTheme;
    }

    public set selectedTheme(value) {
        this._selectedTheme = value;
        let overrides: ChartOptions;
        if (this.selectedTheme === 'dark-theme') {
            // 黑暗版本
            overrides = {
                title: {
                    fontColor: 'yellow'
                },
                legend: {
                    labels: { fontColor: 'white' }
                },
                scales: {
                    xAxes: [{
                        ticks: { fontColor: 'white' },
                        gridLines: { color: 'rgba(255,255,255,0.1)' }
                    }],
                    yAxes: [{
                        ticks: { fontColor: 'white' },
                        gridLines: { color: 'rgba(255,255,255,0.1)' }
                    }]
                }
            };
        } else {
            // 光明版本
            overrides = {
                title: {
                    fontColor: 'blue'
                },
                legend: {
                    labels: { fontColor: 'red' }
                },
                scales: {
                    xAxes: [{
                        ticks: { fontColor: 'black' }, // 標示數值的顏色
                        gridLines: { color: 'rgba(255,255,255,0.1)' }, // 底線 和 | 線的顏色
                        scaleLabel: { fontColor: 'green' } // 標示文字顏色
                    }],
                    yAxes: [{
                        ticks: { fontColor: 'red' },
                        gridLines: { color: 'rgba(255,255,255,0.1)' } // 左側線 和 --- 線的顏色
                    }]
                }
            };
        }

        this.themeService.setColorschemesOptions(overrides);
    }

}

app.component.ts

constructor(
    private chartColorService: ChartColorService) {
}

// ngOnInit 設定要把個版本,就會把設定覆蓋寫進 顏色模板了
this.chartColorService.selectedTheme = 'light-theme';

上一篇
NG10鐵人賽 - 27 - ng2-charts github 導讀
下一篇
NG10鐵人賽 - 29 - ng2-charts - bar 實例
系列文
Angular10 實作教學30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言