rxjs如何在角度服务中一起返回可观察到的值

时间:2020-02-28 19:04:14

标签: javascript angular typescript rxjs ngx-bootstrap

在我的角度应用程序内;我正在使用 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 :(得分:0)

足够了吗?

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

您可以在组件内部执行以下操作:

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