我想在方法中使用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#),但它不起作用。我不想使用“地图”。
答案 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;
});
}