我在访问内部订阅的变量时遇到问题。在这里,我包含代码,在ngOninit中,我有返回对象的服务,并且可以从该对象中获取所需的json,然后尝试将其存储在变量中,然后尝试在外部访问该变量订阅我无法做到的。那么如何在外部使用变量?
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(response => {
console.log(response);
const temp = response['TemplateJson'];
var Data = temp;
})
initJq();
var formData = Data
this.formBuilder = (<any>jQuery('.build-wrap')).formBuilder({ formData });
// Sample code to handle promise to get for data on page load directly
this.formBuilder.promise.then(formBuilder => {
console.log(formBuilder.formData);
});
}
在内部的这段代码中,有变量Data,临时有json,所以我该如何将数据存储在formData变量中。
答案 0 :(得分:1)
这很简单
data: any;
ngOnInit() {
const id = this.route.snapshot.paramMap.get('id');
const that = this;
this.dataService.GetFormById(+id).subscribe(response => {
console.log(response);
// const temp = response['TemplateJson'];
that.data = response['TemplateJson'];
})
}
由于这是异步的,this.data
必须在使用之前进行检查,否则是否可以使用它,或者您可以在异步回调中进行任何所需的操作,该回调位于{{1 }}进行初始化。
示例
data
答案 1 :(得分:0)
我可以根据您的代码想到的2种方法:只需设置一个全局变量并在您的订阅中引用它即可:
a = my_series.resample('1D',closed='left',label='left').sum(min_count=1)
print (a)
2017-02-01 11.0
2017-02-02 NaN
2017-02-03 3.0
Freq: D, Name: a, dtype: float64
或者(由于需要从预订中获取数据的大多数代码必须异步运行),只需使用rxjs管道并将数据传递给Tap或您想要的任何其他运算符即可:
`
data = null; //here
const id = this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(response => {
console.log(response);
const temp = response['TemplateJson'];
this.data = temp; //here use it wherever you want using this.data, but check if its null
})
initJq();
var formData = Data
this.formBuilder = (<any>jQuery('.build-wrap')).formBuilder({ formData });
// Sample code to handle promise to get for data on page load directly
this.formBuilder.promise.then(formBuilder => {
console.log(formBuilder.formData);
});
}`