我有组件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时,这应该使页面数组可用吗?相反,我总是得到不确定。 我做错了什么?