javascript - 在角度 6 中为服务中分配的数据获取未定义
问题描述
我不想在 .ts 文件中调用服务。会造成很多时间。所以我只想将其分配为我可以使用的全局值,但我一直未定义
这是我的服务文件
@Injectable({
providedIn: 'root'
})
export class DeService {
data:any;
constructor(private http: HttpClient){}
getData(id:any):Observable<any>{
this.http.get(Url.getDetails+"id="+id).pipe(first()).subscribe(res=>{
this.data = res;
console.log(this.data) //Here I got the data
}
return this.http.get(Url.getDetails+"id="+id)
}
}
ts文件
export class text implements OnInit{
constructor(public de:DeService){}
ngOnInIt(){
console.log(this.de.data); //here it returns undefind
}
}
解决方案
你不能像那样访问observable,你需要调用该方法并订阅该方法,如下所示,
getData(id:any):Observable<any>{
return this.http.get(Url.getDetails+"id="+id);
}
在组件中,
ngOnInIt(){
this.de.getData(id).subscribe((data)=>{
console.log(data);
});
}
推荐阅读
- javascript - 类中的方法仅在它们内部返回值 self JS
- android - 是否可以清理由另一个系统库加载的共享 (HAL) 库?
- react-native - 如何在 react-native 中播放背景视频?
- excel - 将 excel 中的值与匹配和更改的条件相加
- swift - Swift 编译器警告 - 实例方法需要 ###ms 进行类型检查(限制:100 毫秒)
- git - 具有相同提交消息的 Git squash 提交
- javascript - 如何将 HTML 中的文本区域输出到 Javascript 中的变量?
- python - 在 SecondaryAxis 上绘制网格线 - Matplotlib
- php - 无法连接到本地 mysql
- python - 如何使用 NaN 值计算 pandas 的时差