我有一个服务,它可以存储一个对象,以便我可以在其他组件中访问它或从web api请求数据并将其返回到地图中。
objectService的示例获取
pipeline {
agent any
options { skipDefaultCheckout() }
stages{
stage('first stage') {
steps {
checkout scm
}
}
}
}
使用该服务设置页面标题
get(): any {
if (this.object == undefined || this.object == null) {
return this.http.get(this.baseUrl + "/companies/get)
.map((data: any) => {
this.object = data;
return this.object;
});
} else {
return this.object;
}
}
所以这在我第一次加载页面时有效,但是在没有重新加载的情况下导航到页面时,我收到以下错误ngOnInit() {
this.objectService.get().subscribe((data: any) => {
this.title.setTitle(data.name);
});
}
。这是有道理的,因为我返回一个对象而不是一个http请求。
所以我试图只返回对象,而不是http请求。
objectService的示例获取
...subscribe is not a function
使用该服务设置页面标题
get(): any {
if (this.object == undefined || this.object == null) {
return this.http.get(this.baseUrl + "/companies/get)
.map((data: any) => {
this.object = data;
});
}
return this.object;
}
这现在翻了一个问题,页面刷新给我一个错误,说明.objectService.get()。name是未定义的,当我导航到没有页面刷新的组件时,它可以正常工作。
任何有关试图让这个工作的帮助将不胜感激。提前谢谢!
答案 0 :(得分:1)
实际上你正在混合可观察对象和普通对象!
我会说坚持第一个方法,但在返回对象时,将其转换为可观察对象,以便它可以在onNgInit
所以你的服务将
get(): Observable<any> {
if (this.object == undefined || this.object == null) {
return this.http.get(this.baseUrl + "/companies/get)
.map((data: any) => {
this.object = data;
return this.object;
});
} else {
return Observable.of(this.object);
}
}
你的消费仍然是正常的,并适用于两种情况。
ngOnInit() {
this.objectService.get().subscribe(
(data: any) => { // this for response data
this.title.setTitle(data.name);
},
(error: any) => { // this for error
console.log('error: %o', error);
},
);
}