【发布时间】:2019-10-30 06:09:24
【问题描述】:
我正在尝试在我的 2 个组件之间进行通信。在第一个组件中,我有项目列表,我想将其中一个项目发送到我的第二个组件以编辑它们。在第一个组件中,我在我的服务中设置数据,在第二个组件中,我想从服务中读取这些数据,数据即将到来,但是当我在离开 ngOnInit 方法后将此数据设置到我的数组时,我的数组是清晰的。
这是我在第一个组件中的 onClick 编辑按钮
editPurchasesInvoice(i : number) {
this.purchasesService.editPurchasesInvoice(this.purchasesInvoices[i].gpInvoiceitemsByGpInvoiceRecid);
this.router.navigate(['new'], {relativeTo: this.route});
}
服务方法
subject = new Subject<any>();
editPurchasesInvoice(invoiceItems: GpInvoiceitem[]) {
this.subject.next({invoice: invoiceItems});
}
getEditedInvoice(): Observable<any> {
return this.subject.asObservable();
}
这是我的第二个组件
ngOnInit() {
this.subscription = this.purchaseService.getEditedInvoice().subscribe( data => {
this.invoiceItems.push(data.invoice);
});
}
离开ngOnInit方法后数据丢失。
【问题讨论】:
-
你想从哪里访问它? “离开 ngoni” 是什么意思?
-
我想在 HTML 文件中使用我的 invoiceItems 数组并显示所有这些项目。在将数据推送到 invoiceItems 数组后的 ngOnInit 方法中,它不为空,其他任何地方的数组都是空的
-
信息太少,无法重现。您应该发布您的 HTML 结构和两个组件之间的关系。一种可能的解决方案是在您的服务中使用
BehaviorSubject而不是Subject -
您的服务类是否有多个实例?你是如何注射它们的?
-
@PierreDuc 我使用了 BehaviorSubject,现在它工作正常,显示数据我还更改了将 invoiceItems 初始化为 this.invoiceItems = data.invoice;
标签: angular service components