Angularjs 如何在调用API的方法中使用来自subscribe in outside的变量数据

Angularjs 如何在调用API的方法中使用来自subscribe in outside的变量数据,angularjs,angular,typescript,api,angular8,Angularjs,Angular,Typescript,Api,Angular8,在我的angular应用程序中,我在服务中调用了API,并在组件中订阅了该数据,但我无法在外部使用该变量(在订阅内部) .service.ts dronedetails():Observable<object>{ let httpOptions = { headers: new HttpHeaders({ 'Content-Type': 'application/json', 'Authorization': 'Token ' + localStora

在我的angular应用程序中,我在服务中调用了API,并在组件中订阅了该数据,但我无法在外部使用该变量(在订阅内部)

.service.ts

dronedetails():Observable<object>{
  let httpOptions = {
    headers: new HttpHeaders({
    'Content-Type': 'application/json',
      'Authorization': 'Token ' + localStorage.getItem('token')
    })
  };
 
    return this.http.get(environment.apiUrl +'/api/data/json', httpOptions)

 ngOnInit() {

this.ds.dronedetails()
       .subscribe((drones)=>{
         this.drones = drones;

      console.log('obj',drones);
       },
       err=>{
        console.log("Error",err)
      }
       );
//If I want to use that drone details it is not taking that drone details

var latlngs = this.drones.drone1.Drone.latlong;
    var droneid = this.drones.drone1.Drone.Droneid;

}

有谁能帮我解决这个问题。

订阅的内容是异步执行的,这意味着无论您想对从api获得的信息做什么,都必须在订阅中执行。如果您尝试在调用api后访问
此.drones
,您的变量将不会从api中定义

只有我已订阅了数据。现在我想使用drones数据,是否可能?是的,您可以访问drone的数据,但只能在订阅内,您可以使用其他一些函数操作数据,但必须在订阅中调用它们。您也可以使用模板中的数据,一旦定义了变量,模板就会显示这些数据。是否有任何错误?你有什么问题?您的代码看起来正常。是的,它没有将无人机对象带入subscription in组件之外。sbscribe中有吗?这个
console.log('obj',无人机)的输出是什么?你在哪里定义“this.drones
。它是公共的还是私人的?请填写您的密码。
组件
服务
。首先检查
http
请求的响应。检查控制台是否有任何错误?可能是您没有正确注入服务。更清楚的是我们可以帮助你。问题还不清楚,我得到的对象是drone1:Drone:{Droneid:1001,company:“DJI”,model:“DJIV2”,latlong:[数组值]}。如果在subscribe方法之后使用Drone details,它会显示错误,如:无法读取未定义的属性“Drone”。你能帮我解决这个问题吗。