Как добавить значок свертывания в ngx-bootstrap Accordion
В моем приложении Angular, использующем ngx-bootstrap, я хотел бы добавить значок свертывания, который отражает статус аккордеона (свернутый / развернутый), как показано ниже:
2 ответа
Вот решение, которое сработало для меня
<accordion-group [isOpen]="false" #myGroup>
<button class="btn btn-light float-right">
{{ myGroup?.isOpen ? 'Opened' : 'Closed' }}
<i class="fas" [ngClass]="{'fa-caret-down': myGroup?.isOpen, 'fa-caret-up': !myGroup?.isOpen}"></i>
</button>
</accordion-group>
Вы можете сделать это в CSS:
.accordion-toggle[aria-expanded="true"]:before {
content: "\f107";
font: normal normal normal 14px/1 FontAwesome;
}
.accordion-toggle[aria-expanded="false"]:before {
content: '\f106';
font: normal normal normal 14px/1 FontAwesome;
}
Просто нужно стилизовать селектор перед шрифтом с фамилией вашей любимой иконки...
Следующий ответ работает с ngx-bootstrap@5.x.x
. Также решает проблему для людей, желающих использовать что-то отличное от FontAwesome:
<!-- Please note that the #accordionGroupRef is scoped! -->
<accordion-group
*ngFor="let number of [1,2,3,4];"
[isOpen]="false"
#accordionGroupRef
>
<!-- Header -->
<h5 class="m-0" accordion-heading>
{{ accordionGroupRef.isOpen ? "OPEN" : "CLOSED"}}
I am accordion {{number}}
<span class="float-right"> I float all the way on the right!</span>
</h5>
<!-- Content -->
Accordion content
</accordion-group>
Вы можете использовать accordion-group
вход isOpen
,
HTML
<accordion-group [isOpen]="isContentOpen">
<button class="btn btn-light float-right">
<i *ngIf="isContentOpen" class="fas fa-caret-up">Open</i>
<i *ngIf="!isContentOpen" class="fas fa-caret-down">Close</i>
</button>
</accordion-group>
TS
isContentOpen: boolean = false;
Я рекомендую установить https://fontawesome.com/