【发布时间】:2017-05-06 04:51:23
【问题描述】:
在有人将此标记为重复之前以下是我尝试过但失败的链接
Angular 2 - passing data from service to component
How to subscribe to an event on a service in Angular2?
场景 我想将数据从我的 ng2 服务发送到组件,并且正在使用 ng2 HTTP 从 API 加载数据
下面是伪代码
我的服务
@Output() event_callback: EventEmitter<any> = new EventEmitter();
getUserDetails(id)
{
var user_data;
this.loadRemoteUrl('getUserdata?user_id=' + id).subscribe(
data => { user_data = data},
err => console.error(err),
() => {
console.log('Inside My Service');
this.user_data = user_data;
this.event_callback.emit(this.user_data);
}
);
}
我的组件
constructor(private http:Http, private myService: MyService)
{
var userDetails;
myService.event_callback.subscribe(
data => this.callbackFunction()
);
}
callbackFunction()
{
console.log("Inside MyComponent")
}
控制台日志
Inside My Service
HTTP 请求正在正确返回数据,我在发出之前尝试转储它并且它工作但问题是我无法访问我的组件中的数据,我尝试传递数据,现在我只是一些记录消息来识别流但仍然无法从我的组件文件中查看日志消息。
我错过了什么?
【问题讨论】:
-
你能确保你的组件在调用 getUserDetails 之前订阅了服务吗?
-
你在哪里打电话
getUserDetails?来自另一个组件?另请注意,您不需要在服务上添加@Output 注释 -
它被组件的另一个方法调用... @rob
-
@Milad 是的,我确信当调用
getUserDetails()方法时组件会订阅...
标签: angular angular2-services angular2-components