Настройка групп заголовков Ag-grid

Мне нужно настроить группы заголовков в Ag-сетке (в Angular): 1) сделать текст в них по центру (по умолчанию выравнивается по левому краю); 2) сделать фон каждой группы заголовков определенным цветом

Как это сделать?

Я попытался сделать это в SCSS для этого класса, но ничего не изменилось в представлении, даже когда я переименовал файл из SCSS в CSS.

Использование Angular6, Ag-grid v.20, SCSS.

Пожалуйста помоги!

ТИА, Олег

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
0
0
3 575
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Чтобы центрировать текст группы заголовков в ag-Grid, все, что вам нужно сделать, это использовать свойство CSS justify-content в классе .ag-header-group-cell-label.

Возможно, вам придется установить это в своем основном файле styles.scss (тот, который находится на том же уровне каталога, что и ваш index.html, package.json и т. д.).

.ag-header-group-cell-label {
  justify-content: center;
}

Точно так же вы можете настроить цвет групп заголовков.

.ag-header-group-cell-with-group {
    background-color: blue;
}

Вот демо для справки. Я внес изменения в файл styles.css.

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

Например, именно так вы должны определить свои columnDefs в своем компоненте, который содержит ag-grid, при этом группа заголовков называется «Личная», а пользовательский компонент называется customHeaderGroupComponent

this.columnDefs = [
  {
    headerName: "Personal",
    headerGroupComponent: "customHeaderGroupComponent",
    children: [
      {
        headerName: "Athlete",
        field: "athlete"
      },
      {
        headerName: "Age",
        field: "age"
      }]
  },
]

Вы можете обратиться к остальной части демонстрации через здесь

Привет, Венджун. Обе вещи работают для меня (на удивление, из основного файла scss, а не из mycomponent.scss. Одно небольшое изменение: я хотел показать несколько групп заголовков с заголовками их столбцов разными цветами (чтобы пользователи сразу видели разные группы). Как это может быть? сделать?

olegkon 09.04.2019 05:21

Да, это потому, что инкапсуляция представлений в Angular работает. Что касается настройки этой группы заголовков, вам нужно будет расширить ее, определив свой собственный headerGroupComponent и определив там свои собственные стили CSS. Я напишу краткий план, а вы можете изучить его самостоятельно?

wentjun 09.04.2019 14:33

Чтобы центрировать текст, вам нужно вручную настроить компонент в файле CSS следующим образом:

    ::ng-deep .ag-header-cell-label {
      display: flex;
      justify-content:center;

      ::ng-deep .ag-header-cell-text {
        display:flex;
        align-items:center;
      }
    }

Для цвета фона вы можете сделать то же самое, что и выше, просто выберите свой класс, который вы хотите изменить, используя файл ::ng-deep.

Надеюсь это поможет!

Мне нужно было сделать то же самое, и я обнаружил, что другие ответы не полностью отвечают на вопрос для меня. В документации в основном говорится об использовании компонента для рендеринга, но это не сработало для меня, и я обнаружил, что применение некоторых простых стилей является излишним. Вы должны определить стили CSS для ag-header-group-cell-with-group — это основной ключ. В противном случае стили не будут отображаться в вашем пользовательском интерфейсе, даже если вы укажете headerClass в определениях столбцов. Вот как это сделать в CSS:

::ng-deep .ag-header-group-cell-with-group {
    .ag-header-group-cell-label {
        justify-content: center;
    }
}

::ng-deep .ag-header-group-cell-with-group.blueFill {
    background-color: blue;
}

::ng-deep .ag-header-group-cell-with-group.redFill {
    background-color: red;
}

В определениях столбцов примените стиль следующим образом:

{
    headerName: 'Parent Group A',
    headerClass: 'blueFill',
    children: [...]
},
{
    headerName: 'Parent Group B',
    headerClass: 'redFill',
    children: [...]
}

Другие вопросы по теме