rx js как вернуть наблюдаемое и значение в службу angular - PullRequest
0 голосов
/ 28 февраля 2020

в моем приложении angular; я использую ngx- bootstrap модальный.

этот модальный режим используется для возврата наблюдаемых обратных вызовов, когда модальный показан и скрыт (onShown / onHidden) после нажатия кнопки.

Мой код выглядит следующим образом:

import {Injectable, TemplateRef} from '@angular/core';
import {BsModalService} from 'ngx-bootstrap/modal';
import {BsModalRef} from 'ngx-bootstrap/modal/bs-modal-ref.service';

@Injectable()
export class MyService {

  modalRef: BsModalRef;
  constructor(private modalService: BsModalService) {

  }
  openModal(template: TemplateRef<any>) {
    this.modalRef = this.modalService.show(template ,{ class: ' modal-lg' }  );
  }

  onModalShown(){
    return this.modalService.onShown;
    // I WANT TO RETURN this.modalService.onShown + modalRef


  onModalHidden(){
    return this.modalService.onHidden;
  }
}

Моя цель - как мне объединить методы onModalShown / onModalHidden так, чтобы я могу прикрепить ссылку к модальному modalRef одновременно с ответом this.modalService.onShown?

Я ХОЧУ ВЕРНУТЬ this.modalService.onShown + modalRef и иметь возможность в моем компоненте подписаться на него и получить обе данные

@Component()
export class MyComponent {

constructor( private myService : MyService) {}

 whenCallbackFired(){
  this.myService.onModalShown.subscribe(()=>{
      GET HERE BOTH INFORMATIONS ??
  })
 }

}

К сведению; modalRef устанавливается после некоторого нажатия на кнопку

Предложения?

1 Ответ

0 голосов
/ 28 февраля 2020

Будет ли этого достаточно:

onModalShown() {
  return this.modalService.onShown.pipe(
    map((directive) => ({ directive, modalRef: this.modalRef })
  );
}

Внутри вашего компонента вы можете сделать:

whenCallbackFired(){
  this.myService.onModalShown.subscribe(({ directive, modalRef })=> {
    console.log(modalRef);
  })
}
...