Я использую модуль primeng p-dropdown. Я прикрепил <ng-template>
, чтобы показать мои данные в трех столбцах: имя, адрес и адрес электронной почты соответственно. Без использования атрибута appendTo
происходит перетаскивание большого количества текста на следующую строку и уродливую горизонтальную полосу прокрутки. Я использовал appendTo="body"
, и проблема с отбрасыванием текста частично устранена, но я все еще вижу, что текст столбца адреса переносится на следующую строку. После дальнейшего расследования я обнаружил, что p-dropdown
выводит элемент оверлея div
, и в моем случае для него встроен атрибут стиля css 'min-width'
, установленный на '473px'
. Вот выводимый элемент div.
<div class="ng-trigger ng-trigger-overlayAnimation ng-tns-c5-5 extendWidth ui-dropdown-panel ui-widget ui-widget-content ui-corner-all ui-shadow ng-star-inserted" ng-reflect-klass="extendWidth" ng-reflect-ng-class="ui-dropdown-panel ui-widget u" style="min-width: 473px; z-index: 1001; top: 210px; left: 419.875px; transform: translateY(0px); opacity: 1;">
Я использовал инструменты разработчика Chrome, чтобы изменить его на 635px
, и панель наложения стала достаточно широкой, чтобы отображать адрес в одной строке, горизонтальной полосы прокрутки больше нет. Теперь я пытаюсь переопределить этот встроенный стиль из Angular, и я не могу этого сделать.
- Документация библиотеки предоставляет свойство
panelStyle
для применения встроенного стиля к элементу оверлея div, я пробовал использовать его, но, поскольку!important
не может быть применен здесь (потому что он отправляет эти встроенные стили вngStyle
на бэкэнде). Так что в моем случае это было бесполезно. - Затем я попытался использовать атрибут
panelStyleClass
, чтобы установить для класса значениеextendWidth
. Имя класса отображается в блоке div, но примерно такng-reflect-klass="extendWidth"
. И стили css, присутствующие внутри класса, не будут применяться даже с:host >>>
<p-dropdown
name="customer"
[style]="{ width: '100%' }"
(onChange)="addCustomer()"
[autoDisplayFirst]="false"
[options]="customers"
[(ngModel)]="selectedCustomer"
optionLabel="fullName"
[filter]="true"
autofocus="true"
[showClear]="true"
required
appendTo="body"
panelStyleClass="extendWidth"
>
<ng-template let-customer pTemplate="item">
<div class="p-grid">
<div class="p-col-3">{{ customer.value.fullName }}</div>
<div class="p-col-6">{{ customer.value.streetAddress }}</div>
<div class="p-col-3">{{ customer.value.email }}</div>
</div>
</ng-template>
</p-dropdown>
Это должно позволить мне каким-то образом переопределить настраиваемый атрибут min-width.