#angular #vmware-clarity
#angular #vmware-ясность
Вопрос:
Я вызываю службу API, которая возвращает массив JSON. У меня также есть код во внешнем интерфейсе, который составляет список столбцов или полей на основе JSON. Этот список столбцов не является фиксированным списком и может отличаться в зависимости от содержимого JSON. Итак, мне нужно динамически воссоздавать столбцы таблицы данных во время выполнения.
Это работает при использовании директивы *ngFor и переборе массива столбцов, который предварительно определен или инициализирован в коде, но мне нужно изменить список столбцов во время выполнения.
Пример:
<clr-dg-column *ngFor="let field of fields" [clrDgField]="field.name">
{{ field.text }}
</clr-dg-column>
let fields = [ { name: "id", text: "Id" }, { name: "name", text: "Name" }];
changeFields() {
this.fields = [ { name: "userId", text: "User Id" }, { name: "desc", text: "Description" }];
}
При вызове changeFields()
функции я ожидал, что столбцы datagrid будут изменены на новый список столбцов. Но проблема в том, что он не выполняет повторную визуализацию столбцов.
В примере ниже показано первое изображение с начальными столбцами таблицы данных, на втором изображении показаны пустые столбцы, измененные во время выполнения
Перед изменением переменных fields:
После изменения полей во время выполнения:
Комментарии:
1. Есть ли у вас простое воспроизведение того, что вы делаете, чтобы нам было проще сортировать запрос? У нас есть начало в stackblitz.com/@clr-team
2. @JeremyWilken Извините, я просто неправильно использовал datagrid. Теперь это работает идеально. Вот над чем я сейчас работаю. Чего я пытаюсь достичь, так это динамической генерации столбцов на основе ключей первой записи в массиве JSON. Вы можете проверить этот StackBlitz, если вам это интересно: stackblitz.com/edit/clarity-light-theme-v1-0-oadj7e