首页 > 解决方案 > 在角度 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
    }
}

标签: javascriptangulartypescriptserviceglobal-object

解决方案


你不能像那样访问observable,你需要调用该方法并订阅该方法,如下所示,

getData(id:any):Observable<any>{
  return this.http.get(Url.getDetails+"id="+id);
}

在组件中,

ngOnInIt(){
   this.de.getData(id).subscribe((data)=>{
     console.log(data);
   });
}

推荐阅读