Необходимо принять во внимание несколько изменений.
Первый шаг - зарегистрировать ваши модалы в разделе entryComponents
вашего app.module.ts
:
entryComponents: [
AboutComponent,
],
Далеескопируйте ваш старый модал в ваш новый компонент и удалите эти 2 строки:
<ng-template #contentAbout let-c="close" let-d="dismiss">
</ng-template>
После этого в логике события click есть небольшое изменение в том, как его вызвать:
Это новый HTML-код:
<a class="nav-link" (click)="openAbout()">About</a>
Это новое событие TypeScript:
openAbout() {
//Here you define the name of your component
this.modalService.open(AboutComponent);
//This section is if you want to have any variable to initialize
//compConst.componentInstance.weight = undefined;
}
Кроме того, в новом компоненте необходимо добавить изменение constructor
и добавитьэкземпляр NgbActiveModal
.
constructor(public activeModal: NgbActiveModal) { }
Еще одно важное изменение в логике закрытия модального окна, его необходимо изменить на это:
<button type="button" class="close" aria-label="Close" (click)="activeModal.dismiss('Cross click')">
<span aria-hidden="true">×</span>
</button>
Вам необходимо изменитьold: (click)="d('Cross click')"
to (click)="activeModal.dismiss('Cross click')"
И со всеми этими изменениями он будет работать как шарм.Я получил вдохновение здесь:
https://stackblitz.com/edit/angular-uwtgs6