Показать сообщение отдельно
  #7 (permalink)  
Старый 28.08.2018, 08:29
Интересующийся
Отправить личное сообщение для kotelok Посмотреть профиль Найти все сообщения от kotelok
 
Регистрация: 27.08.2018
Сообщений: 22

Да, работает, спасибо. Только не нашёл в документации, в какой именно момент обновляется значение, возвращаемое 'getModalsCount', так что немного иначе получилось, но суть та же:
@Injectable()
export class ModalWrapService {

    private activeModals: BsModalRef[] = [];

    constructor(private modalService: BsModalService) {

        this.modalService.onHide.subscribe(reason => {
            var topModalRef = this.activeModals.splice(this.activeModals.length - 1, 1)[0];

            if (reason != null) {
                topModalRef.content.result.next(null);
            }
        });
    }

    show(content: string | TemplateRef<any> | any, config?: ModalOptions): AnonymousSubject<any> {
        var modalRef = this.modalService.show(content, config);

        this.activeModals.push(modalRef);

        modalRef.content.result.pipe(take(1)).subscribe(() => {
            
            if (modalRef == (this.activeModals.length == 0 ? null : this.activeModals[this.activeModals.length - 1])) {
                modalRef.hide();
            }
        });

        return modalRef.content.result.pipe(take(1));
    }
}
Ответить с цитированием