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

问题描述 投票:0回答:1

在我的角度应用程序内;我正在使用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

建议?

javascript angular typescript rxjs ngx-bootstrap
1个回答
0
投票

足够了吗:

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

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

whenCallbackFired(){
  this.myService.onModalShown.subscribe(({ directive, modalRef })=> {
    console.log(modalRef);
  })
}
© www.soinside.com 2019 - 2024. All rights reserved.