Да, работает, спасибо. Только не нашёл в документации, в какой именно момент обновляется значение, возвращаемое '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));
    }
}