我阅读了有关如何在 Angular 中使用 NgZone 的文章。但是我仍然无法在第一次执行调用中输入订阅。请帮我解决一下这个。提前致谢 :)
constructor(private _apicallservice: ApiCallService, private _ngzone : NgZone) {
this.someMethod();
})
}
ngOnInit() {
this.someMethod();
}
我要执行的方法:
getEVforMetric() {
this._apicallservice.getData("report/getmetricIsEVdata").subscribe(data => {
console.log("EV values returned from API");
this.isSchVarByReleaseDate = data[0].Value;
this.isCostVarianceByEv = data[1].Value;
})
}
我有一个从 API 获取数据的服务。数据正在从 API 返回,但订阅在第一次调用中不起作用,我将这两个值都设为未定义。我知道这是因为 Angular 中的异步调用,所以我像这样将我的方法包装在 NgZone 中,但似乎没有任何效果。
someMethod() {
this._ngzone.run(() => this.getEVforMetric())
}
我为这两个值做了console.log,但它们在第一次调用中未定义,但在订阅了其他一些方法执行数据之后。我希望这些值在第一次调用本身中得到更新。我是Angular的初学者,请帮忙:)
getData() 方法:
getData(url: string){
let pagedata: any;
var data = JSON.parse(this._clientcacheservice.getPageCache(PageDataEnum.userInfo));
let jsonObj: any = data.defaultfilter;
jsonObj.userId = data.userid;
let Url = environment.apiUrl + '/api/' + url ;
pagedata = this.post(Url, jsonObj);
return pagedata;
}