#angular #ngx-bootstrap
#angular #ngx-bootstrap
Вопрос:
Я хочу поместить модал из bootstrap в свое приложение. Для меня важно создать модель самостоятельно. С примером ngx-начальной загрузки ng-template это невозможно сделать. Есть ли какое-либо лучшее решение вместо этого???
<ng-template #template>
<div class="modal-header-custom">
<h4 class="modal-title pull-left">Modal</h4>
<button type="button" class="close pull-right" aria-label="Close" (click)="modalRef.hide()">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body"></div>
</ng-template>
Комментарии:
1. Что на самом деле вы хотите реализовать? Можете ли вы перефразировать вопрос?
2. Я хочу создать модальный стиль самостоятельно, как показано в моих вопросах. Это невозможно с помощью приведенного выше решения
Ответ №1:
В основном, что вы можете сделать, это создать пользовательский угловой модальный компонент в виде оболочки с желаемым внешним видом и стилем.
Пример HTML-компонента:
<div class="custom-modal">
<div class="custom-modal-body">
<ng-content></ng-content> <!--used for content projection-->
</div>
</div>
<div class="custom-modal-background"></div>
После этого вы создаете модальный сервис, чтобы он мог добавлять и удалять модальные по щелчку. Например:
export class ModalService {
private modals: any[] = [];
add(modal: any) {
this.modals.push(modal);
}
remove(id: string) {
this.modals = this.modals.filter(x => x.id !== id);
}
open(id: string) {
const modal = this.modals.find(x => x.id === id);
modal.open();
}
close(id: string) {
const modal = this.modals.find(x => x.id === id);
modal.close();
}
}
Как только вы закончите с сервисом, вы можете сгенерировать некоторый компонент, который будет являться оболочкой для модального компонента оболочки, где будет использоваться проекция содержимого. Например:
<custom-modal id="custom-modal-1">
<h1>A Custom Modal!</h1>
<p>Home page text: <input type="text" [(ngModel)]="bodyText" /></p>
<button (click)="closeModal('custom-modal-1');">Close</button>
</custom-modal>
Это самая простая форма создания пользовательской модальной формы, я предлагаю вам использовать ее с каким-либо типом материала Angular, поскольку модалы могут быть сложными для обработки после пользовательской реализации.
Для получения полного примера, пожалуйста, смотрите Этот stackblitz:
https://stackblitz.com/edit/angular-custom-modal-custom
Я надеюсь, что это поможет вам, счастливого кодирования
Ответ №2:
Если вы хотите кардинально изменить стиль (изменить тему) модального, я бы посмотрел на применение разных стилей CSS к модальным классам. Взгляните на SCSS-источник, чтобы определить, на какие классы вам нужно ориентироваться:
https://github.com/twbs/bootstrap/blob/main/scss/_modal.scss