PrimeNG TurboTable с нестандартной шириной не работает должным образом

Я пытаюсь использовать turbotable PrimeNG с нестандартным размером (500 пикселей), и я ожидал, что ширина столбцов устанавливается автоматически, но это не работает. Я получаю горизонтальную полосу прокрутки, а общая ширина кажется фиксированной и составляет 767 пикселей. Если я попытаюсь установить ширину столбца вручную, она будет проигнорирована. Если я не устанавливаю ширину таблицы и пытаюсь поместить ее в DIV шириной 500 пикселей, я все равно получаю тот же результат (горизонтальная полоса прокрутки).

Ниже приведен (очень простой) код:

        <p-table #dt [value]="statusChangesData" [paginator]="true" [alwaysShowPaginator]="false" [rows]="2" [style]="{'width':'500px'}">
            <ng-template pTemplate="caption" >
                <div class="tableCaption">
                    <span translate>Status changes</span>
                </div>
            </ng-template>
            <ng-template pTemplate="emptymessage">
                <tr>
                    <td [attr.colspan]="3">
                        <span translate>There are no data into the table</span>
                    </td>
                </tr>
            </ng-template>
            <ng-template pTemplate="header">
                <tr>
                    <th style="width:200px" [pSortableColumn]="'date'"><span translate>Date</span><p-sortIcon [field]="'date'"></p-sortIcon></th>
                    <th style="width:200px" [pSortableColumn]="'status'"><span translate>Status</span><p-sortIcon [field]="'status'"></p-sortIcon></th>
                    <th style="width:100px" [pSortableColumn]="'userId'"><span translate>User ID</span><p-sortIcon [field]="'userId'"></p-sortIcon></th>
                </tr>
            </ng-template>
            <ng-template pTemplate="body" let-col>
                <tr>
                    <td>{{col.date}}</td>
                    <td>{{col.status}}</td>
                    <td>{{col.userId}}</td>
                </tr>
            </ng-template>
        </p-table>

и вот как это выглядит:

Турбо-таблица

Как видите, и заголовок, и средство разбиения на страницы соблюдают установленную мной ширину (500 пикселей), а тело таблицы нет.

Я пробовал все предложения, которые могу найти в переполнении стека, включая настройку такого стиля: [style]="{'width':'200px'} или использование [autoLayout]="true", но, похоже, ничего не работает. Я использую primeNG 7.0.0.

PS. Я действительно не хочу устанавливать ширину каждого столбца вручную. Мне просто не нужна горизонтальная полоса прокрутки.


person Haritos30    schedule 13.03.2019    source источник
comment
Вы пытались поместить всю таблицу в div с position : relative; width : 50%;, а затем установить ширину таблицы на 100%.   -  person Σωτήρης Ραφαήλ    schedule 13.03.2019


Ответы (2)


Я скопировал ваш код сверху и вставил его в новый проект Stackblitz, чтобы проверить его. Я даже специально указал версию PrimeNG 7.0.0, чтобы убедиться в отсутствии проблем с разными версиями. (Я обнаружил, что это именно тот случай, когда я использовал PrimeNG.) Я также составил некоторые данные, которые нужно показать.

Я не вижу проблем, о которых вы говорите. Вот как выглядит моя результирующая сетка (игнорируйте тот факт, что Stackblitz не находит primeicons.)

введите здесь описание изображения

Его ширина составляет 500 пикселей, и все столбцы подчиняются фиксированной ширине, указанной в строке заголовка (теги <th>). Когда я удалил фиксированную ширину, указанную вами в тегах <th>, все столбцы автоматически настраиваются и вписываются в Таблица 500 пикселей.

У меня есть эта таблица в отдельном компоненте, и она не заключена в <div> или какие-либо другие теги. Вы можете проверить это по ссылке Stackblitz, которую я предоставил выше.

Интересно, есть ли что-то в остальной части страницы, на которой это содержится, что вызывает проблему?

person Cindy K.    schedule 14.03.2019
comment
Вы правы, проблема не в таблице primeNG, кто-то определил минимальную ширину для .ui-table в одном из родительских файлов css. Спасибо, что помогли мне понять основную причину проблемы. - person Haritos30; 14.03.2019

Если у кого-то есть аналогичная проблема, попробуйте установить минимальную ширину таблицы равной 0:

::ng-deep .ui-table .ui-table-wrapper table {
    min-width: 0px;
}
person Haritos30    schedule 14.03.2019
comment
Также, если кто-то хочет, чтобы автоматическая горизонтальная полоса прокрутки отображалась под определенной шириной, он устанавливает минимальную ширину на определенное значение в пикселях. - person Sfalagkiaris; 14.03.2019