Angular 如何访问订阅中的变量

Angular 如何访问订阅中的变量,angular,angular2-routing,angular7,Angular,Angular2 Routing,Angular7,我有一个问题,访问一个变量是内部订阅。在这里,我包括代码,在ngOninit中,我有一个返回对象的服务,从这个对象中,我可以得到我想要的json,然后我尝试将它存储在一个变量中,然后我尝试在订阅之外访问那个变量,我无法做到这一点。那么我如何在subscribe之外使用变量呢 ngOnInit(){ const id=this.route.snapshot.paramMap.get('id'); this.dataService.GetFormById(+id).subscribe(响应=>{ 控

我有一个问题,访问一个变量是内部订阅。在这里,我包括代码,在ngOninit中,我有一个返回对象的服务,从这个对象中,我可以得到我想要的json,然后我尝试将它存储在一个变量中,然后我尝试在订阅之外访问那个变量,我无法做到这一点。那么我如何在subscribe之外使用变量呢

ngOnInit(){
const id=this.route.snapshot.paramMap.get('id');
this.dataService.GetFormById(+id).subscribe(响应=>{
控制台日志(响应);
const temp=response['TemplateJson'];
var数据=温度;
})
initJq();
var formData=数据
this.formBuilder=(jQuery('.build wrap')).formBuilder({formData});
//处理直接获取页面加载数据承诺的示例代码
this.formBuilder.promise.then(formBuilder=>{
console.log(formBuilder.formData);
});
}

在subscribe中的这段代码中有变量数据,而在temp中我有json,所以如何将这些数据存储在formData变量中。

这是非常简单的

数据:任意;
恩戈尼尼特(){
const id=this.route.snapshot.paramMap.get('id');
常数=this;
this.dataService.GetFormById(+id).subscribe(响应=>{
控制台日志(响应);
//const temp=response['TemplateJson'];
that.data=response['TemplateJson'];
})
}
由于这是异步的,
this.data
在使用之前必须检查是否定义了它,或者您可以在异步回调中执行任何您想要的操作,该回调位于订阅块中,
数据
被初始化的位置

示例

数据:任意;
恩戈尼尼特(){
const id=this.route.snapshot.paramMap.get('id');
常数=this;
this.dataService.GetFormById(+id).subscribe(响应=>{
//这是一个异步回调
控制台日志(响应);
//const temp=response['TemplateJson'];
that.data=response['TemplateJson'];
that.generateForm();//初始化this.data变量后调用方法
})
}
generateForm(){
//只是复制你的问题内容给你一个想法
const formData=this.data;
this.formBuilder=(jQuery('.build wrap')).formBuilder({formData});
this.formBuilder.promise.then(formBuilder=>{
console.log(formBuilder.formData);
});
}

这很直截了当

数据:任意;
恩戈尼尼特(){
const id=this.route.snapshot.paramMap.get('id');
常数=this;
this.dataService.GetFormById(+id).subscribe(响应=>{
控制台日志(响应);
//const temp=response['TemplateJson'];
that.data=response['TemplateJson'];
})
}
由于这是异步的,
this.data
在使用之前必须检查是否定义了它,或者您可以在异步回调中执行任何您想要的操作,该回调位于订阅块中,
数据
被初始化的位置

示例

数据:任意;
恩戈尼尼特(){
const id=this.route.snapshot.paramMap.get('id');
常数=this;
this.dataService.GetFormById(+id).subscribe(响应=>{
//这是一个异步回调
控制台日志(响应);
//const temp=response['TemplateJson'];
that.data=response['TemplateJson'];
that.generateForm();//初始化this.data变量后调用方法
})
}
generateForm(){
//只是复制你的问题内容给你一个想法
const formData=this.data;
this.formBuilder=(jQuery('.build wrap')).formBuilder({formData});
this.formBuilder.promise.then(formBuilder=>{
console.log(formBuilder.formData);
});
}

根据您的代码,我可以想出两种方法:只需设置一个全局变量并在订阅中引用它:

`
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);
  });
}`

根据您的代码,我可以想出两种方法:只需设置一个全局变量并在订阅中引用它:

`
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);
  });
}`

您的变量“Data”必须是“public”,也就是说,不是使用var声明,而是作为componen的一部分声明并使用this.Data。(或者您可以在subscribe和pass as参数数据中调用函数initJq。(注意:在typescript不使用var时,使用“let”)您的变量“Data”必须是“public”,也就是说,不使用var声明,声明为组件的一部分并使用this.Data。(或者您可以在subscribe和pass as参数数据中调用函数initJq)。(注意:在typescript中不使用var,请使用“let”)我不能使用const data:any;我得到的错误类成员不能有'const'关键字。取消定义this.dataAnd正如我的回答所说,你必须检查属性值,或者你必须在回调方法内部执行任何操作。那么你的意思是现在我可以使用它了吗?订阅之外的数据,就像我想在变量输出中存储它一样ide订阅然后我怎么做?你可以使用它,但在使用或在块内执行之前,你必须检查
未定义的
。我将用一个例子更新答案我不能使用常量数据:any;我得到的错误类成员不能有'const'关键字。取消定义this.data,正如我的答案所述,你必须检查pr属性值,或者你必须在回调方法中执行任何操作。那么你的意思是现在我可以使用它了吗?订阅之外的数据,比如如果我想在订阅之外的变量中存储它,那么我该怎么做?你可以使用它,但在使用或在块内执行之前,你必须检查
未定义的
。我将更新答案例如:这种方法对我没有帮助