Angular:在subscribe中设置方法参数

时间:2018-05-23 06:33:27

标签: javascript angular

我想在方法中使用subscribe并将我的变量(cities)作为参数传递给method。

export class MyComponent implements OnInit {
  cities:any;
  constructor(private myApiService: MyApiService) {
  myMethod(this.cities);
  }
  myMethod(value:any)
  {
    this.myApiService.run("myparameter").subscribe((p: any) => {
      value = p.Cities;
      console.log(this.cities);// result-> []
      console.log(p.cities);   // result-> (4) [{…}, {…}, {…}, {…}]
  });
}

我的变量没有变化。我知道我无法从方法返回数据,因为它是异步调用。我尝试使用“ref”(如C#),但它不起作用。我不想使用“地图”。

1 个答案:

答案 0 :(得分:1)

这种情况正在发生,因为cities param作为值传递给方法。你可以通过使用小技巧实现你想要的东西:

如果来自服务的响应是数组:

export class MyComponent implements OnInit {
  cities = [];
  constructor(private myApiService: MyApiService) {
  myMethod(this.cities);
  }
  myMethod(value:any)
  {
    this.myApiService.run("myparameter").subscribe((p: any) => {
      p.Cities.forEach(city => value.push(city));
  });
}

如果回复是对象:

export class MyComponent implements OnInit {
  cities = {val: {}};
  constructor(private myApiService: MyApiService) {
  myMethod(this.cities);
  }
  myMethod(value:any)
  {
    this.myApiService.run("myparameter").subscribe((p: any) => {
      value.val = p.Cities;
  });
}