您好我正在尝试将组件A中的对象传递给另一个兄弟组件B,我正在使用服务来执行此操作并且我正在使用主题。但是当从服务调用get方法时,我无法获取组件B中的数据。我不知道我做错了什么。任何帮助都会很棒。我的代码如下 -
层次结构服务
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/map';
@Injectable()
export class HierarchyService {
private dataObj = new Subject;
getDataObj = this.dataObj.asObservable();
constructor () {}
setData(setData:Object){
console.log("setData +++ ", setData);
this.dataObj.next(setData);
}
}
组件A 在事件处理程序内部,我在代码下面设置 -
this.hierarchyService.setData(treeModel);
组件B 在ngOnInit中我试图获取我在组件A中设置的数据
this.hierarchyService.getDataObj.subscribe(data => console.log("data ", data));
答案 0 :(得分:2)
我找到了解决方案,我实际上是将层次结构服务作为组件A和组件B的提供者注入。相反,我只是将服务添加为我的app.module的提供者,并作为提供者从组件A和组件B中删除,并且它工作正常
答案 1 :(得分:1)
您如何使用您的服务不是很清楚。
您是否在两个组件上使用提供程序:[]?在这种情况下,两者都使用不同的实例化而不是单例,因此无法共享数据。
将您的服务放在app.module
的供应商数组中,然后重试。
如果您想使用@Input()@ Output()来共享数据,请参阅此帖子Angular component communication by using Input Output decorator