在上次更新后订阅behaviourSubject

时间:2017-11-27 15:24:01

标签: angular typescript rxjs

我有组件1向共享服务发送数据:

//Component 1
  printPage() {
    let pages: Page[] = [];
    pages.push(this.selectedPage);
    this.printService.print(pages);
  }

在共享服务上我有一个行为主题,其中包含我要打印的页面数组,然后我会创建。然后我将在文档上创建一个iframe,路由到" / pages / print /"。

export class PrintService {
  private pagesSource = new BehaviorSubject<Page[]>([]);
  currentPages = this.pagesSource.asObservable();
  constructor(

  ) { }
  print (pages: Page[]) {
    this.pagesSource.next(pages);
    let oHiddFrame = document.createElement("iframe");
    oHiddFrame.style.visibility = "hidden";
    oHiddFrame.style.position = "fixed";
    oHiddFrame.style.right = "0";
    oHiddFrame.style.bottom = "0";
    oHiddFrame.src = "/pages/print/"; //-> Print Component
    document.body.appendChild(oHiddFrame);
  }
}

在路由到/ pages / print的组件上我订阅了printService上的主题。

//Print Component
  constructor(
    private printService: PrintService,
  ) {
    this.printService.currentPages.subscribe(pages => {
      this.pages = pages; // always gives me undefined
    });
  }

复制演示: https://github.com/dazzzed/iframe-com-service

由于我无法附加组件的iframe,因此无法创建一个plnkr。

那么,当我订阅print Service上的currentPages时,这应该使页面数组可用吗?相反,我总是得到不确定。 我做错了什么?

0 个答案:

没有答案