Изменение размера NgxCharts при изменении данных

Я создаю приложение, используя диаграммы Ngx от Swimlane для графического представления данных, но у меня возникает странное поведение, когда я обновляю данные с помощью кнопки обновления, которая повторно вызывает функцию GET для обновления массива данных. Я использую @ angular / flex-layout для «мозаичного» представления, но даже без его использования я все еще сталкиваюсь с этой проблемой - он просто увеличивает родительский контейнер. Я не хочу использовать жестко заданные значения px в свойстве [view], потому что я хочу, чтобы он работал с любым размером графика / плитки.

Я использую довольно простую вертикальную гистограмму:

<div>
    <div>
        <ngx-charts-bar-vertical [results]="dataArray"
                                 [legend]="true"
                                 [xAxis]="true"
                                 [yAxis]="true"
                                 [xAxisLabel]="'Date'"
                                 [yAxisLabel]="'# tickets Raised'"
                                 [showXAxisLabel]="true"
                                 [showYAxisLabel]="true"></ngx-charts-bar-vertical>
    </div>
    <div>
        <!-- Got a table here -->
    </div>
</div>

Чтобы обновить свой dataArray, я делаю:

export class DashboardComponent implements AfterViewInit {
    constructor(private httpClient: HttpClient, private datePipe: DatePipe, private dataService: DataService) { }

    dataArray: any[] = [];

    getData(): void {

        this.dataService.getSomeData<any[]>().subscribe(d => {
                this.dataArray = d;
        });
    }

    // Init
    ngAfterViewInit(): void {
        this.getData();
    }
}

При начальной загрузке все в порядке и заполнит контейнер (где можно), но когда я нажимаю кнопку обновления, я получаю следующее поведение:  введите описание изображения здесь

Спасибо за уделенное время.


person Matt Brewerton    schedule 24.01.2018    source источник
comment
Вы решили это случайно?   -  person drinu16    schedule 23.03.2018
comment
Привет, нет, это все еще нерешенная проблема!   -  person Matt Brewerton    schedule 23.03.2018
comment
Проблема все еще существует, возможно, придется использовать обходной путь, как показано в разделе ответов.   -  person Sandy B    schedule 16.11.2020


Ответы (5)


Мы решили это с помощью div вокруг диаграммы и с помощью CSS добавили высоту 40 или 50vh.

При обновлении диаграмма больше не меняется по высоте.

person drinu16    schedule 23.03.2018

Для меня сработало следующее:

<div style="max-height: 50vh">
  <ngx-charts-bar-vertical   [results]="dataArray"
                             [legend]="true"
                             [xAxis]="true"
                             [yAxis]="true"
                             [xAxisLabel]="'Date'"
                             [yAxisLabel]="'# tickets Raised'"
                             [showXAxisLabel]="true"
                             [showYAxisLabel]="true"></ngx-charts-bar-vertical>
</div>

Обратной стороной этого является то, что вам нужно будет определить максимальную высоту.

person Prom0    schedule 04.06.2019

Использовать просмотры

<ngx-charts-bar-vertical [results]="dataArray"
                                 [legend]="true"
                                 [xAxis]="true"
                                 [yAxis]="true"
                                 [xAxisLabel]="'Date'"
                                 [yAxisLabel]="'# tickets Raised'"
                                 [showXAxisLabel]="true"
                                 [showYAxisLabel]="true" [view]="chartSize">
</ngx-charts-bar-vertical>

и в компоненте определите chartSize

chartSize = [770, 450];
person Sree    schedule 04.11.2019

Просмотр атрибутов установит размер и остановит изменение

  <ngx-charts-line-chart
    [results]="sloGraphData"
    [xAxis]="true"
    [yAxis]="true"
    [legend]="true"
    [legendPosition]="'below'"
    [showXAxisLabel]="false"
    [showYAxisLabel]="false"
    [showRefLines]="true"
    [referenceLines]="refLines"
    [xAxisLabel]="'Days required'"
    [yAxisLabel]="'Date'"
    [view]="[360, 300]">
  </ngx-charts-line-chart>
person Deepesh Nair    schedule 27.11.2019

вы пытаетесь изменить данные не распознается функцией обнаружения изменений.

this.dataArray = d;

вместо этого попробуйте распределить данные, чтобы обнаружить изменения. У меня это сработало.

this.dataArray = [...d];
person Thanan_Jaje    schedule 18.03.2020