【发布时间】:2019-06-26 03:55:23
【问题描述】:
我遵循this 指南,并尝试在不相关的组件:与服务共享数据段落中做类似的事情
数据服务:
@Injectable()
export class MyDataService{
private messageSource = new BehaviorSubject(null);
currentMessage = this.messageSource.asObservable();
constructor(private http: HttpClient) {
setInterval(() => { this.changeMessage(this.resultFromRestCall()); }, 10 * 1000);
}
changeMessage(message: object) {
this.messageSource.next(message);
}
resultFromRestCall(){
const json;
this.http.get<object>(myApiUrl).subscribe(res =>
json['data'] = res['data'] //this is an example
);
return json;
}
组件:
export class MyComponent implements OnInit {
constructor(private dataservice: MyDataService) {}
ngOnInit() {
this.dataservice.currentMessage.subscribe(
message => {this.handleVarChange(message); }
);
}
handleVarChange(message) {
console.log(message.data);
}
使用此代码,我在
handleVarChange日志中得到“未定义”我没有在订阅中调用
this.handleVarChange(message);,而是编写了 console.log(message) 我得到了正确的结果。所以,我的问题是是否可以在我的组件的某些功能中使用来自数据服务的值。
提前致谢
【问题讨论】:
-
resultFromRestCall方法是异步的吗? -
当您提供
resultFromRestCall(...)实现时会很有帮助。 -
您的
message看起来如何,您没有显示...您可以创建minimal reproducible example -
@Batajus 我已经用
resultFromRestCall()实施更新了我的问题。 -
@AJT_82 我在订阅中为json赋值,我已经更新了代码,我之前错过了。
标签: javascript angular components observer-pattern subscribe