Есть еще один вариант.Альдо, это так ужасно, что я совершенно не рекомендую это.Я просто сделал это, потому что мне было любопытно.Если у вас есть компонент, который всегда виден в вашем приложении.Или, по крайней мере, всегда, когда вам нужно отобразить модальное окно, вы можете поместить определение шаблона в этот компонент:
always.vible.component.ts:
<ng-template #content let-modal>
<div class="modal-header">
<h4 class="modal-title">Modal title</h4>
<button type="button" class="close" aria-label="Close" (click)="modal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-light" (click)="modal.close('Close click')">Close</button>
</div>
</ng-template>
Затем в хуке AfterContentInit вы можете инициализировать службу.
ngAfterContentInit(): void {
this.modalService.setModal(this.tempalte);
}
Служба выглядит следующим образом:
import { Injectable, TemplateRef } from '@angular/core';
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
@Injectable({
providedIn: 'root'
})
export class ModalService {
private content:any;
constructor(private modalService: NgbModal) { }
setModal(content:any){
console.log(content);
this.content = content;
}
public showWindow():void{
this.modalService.open(this.content, { centered: true });
}
}
, а затем вы можете добавить эту службу в свое приложение и показать своймодальный, вызвав: showWindow
.Но позвольте мне повторить это не рекомендуется.Я просто докажу, что это возможно.