Javascript 角度:如何转换数组中的值并获取范围外的值?

Javascript 角度:如何转换数组中的值并获取范围外的值?,javascript,arrays,angular,Javascript,Arrays,Angular,在DynamicDatabaseclass I中,从服务器获取值,并进入console.log(this.rootLevelNodes)//folder-1 folder-2 folder-3 folder-4中,请参见下面的代码,但我需要数组中的值。然后在this.routeI printconsole.log(this.rootLevelNodes)//在函数中我得到了null[](this.rootLevelNodes),但我不知道为什么我得到了null结果但是在数组格式的结果中,我想在哪

DynamicDatabase
class I中,从服务器获取值,并进入
console.log(this.rootLevelNodes)//folder-1 folder-2 folder-3 folder-4
中,请参见下面的代码,但我需要数组中的值。然后在
this.route
I print
console.log(this.rootLevelNodes)//在函数中我得到了null[](this.rootLevelNodes),但我不知道为什么我得到了null结果
但是在数组格式的结果中,我想在哪里找到我下面的代码并帮助我

@Injectable()
export class DynamicDatabase {

  rootLevelNodes: string[] = [];
  constructor(private route : ActivatedRoute, private userService : UserService){}
  upperFolderId;
  urlOfFolder;

  initialData(): DynamicFlatNode[] {

    this.route.params.subscribe(params => {

      this.upperFolderId = params['userid'];
      this.urlOfFolder = params['url']+'/'+this.upperFolderId;

      this.userService.getPatternMainFolder({'urlOfFolder' : this.urlOfFolder}).subscribe(
        (data) => {
          if(data != undefined && data != '' && data.payload != undefined && data.payload != ''){
            for(var i = 0 ; i < data.payload.length ; i++){
              this.rootLevelNodes = data.payload[i].folderName;
              console.log(this.rootLevelNodes); // folder-1
                                                   folder-2
                                                   folder-3
                                                   folder-4
                                                   <-- this type result I got

              // I want this type result 
              console.log(this.rootLevelNodes); // ['folder-1','folder-2','folder-3','folder-4']
            }
          }
        }
      )
    });

    console.log(this.rootLevelNodes);  // [] --> Here I result got null array

     // Here also I want this type result want
    console.log(this.rootLevelNodes); //  ['folder-1','folder-2','folder-3','folder-4']
    return this.rootLevelNodes.map(name => new DynamicFlatNode(name, 0, true));
  }
@Injectable()
导出类数据库{
rootLevelNodes:字符串[]=[];
构造函数(私有路由:ActivatedRoute,私有userService:userService){}
上叶状体;
urlOfFolder;
initialData():DynamicFlatNode[]{
this.route.params.subscribe(params=>{
this.upperFolderId=params['userid'];
this.urlOfFolder=params['url']+'/'+this.upperFolderId;
this.userService.getPatternMainFolder({'urlOfFolder':this.urlOfFolder})。订阅(
(数据)=>{
如果(数据!=未定义和数据!=''&&data.payload!=未定义和&data.payload!=''){
对于(var i=0;inewdynamicFlatNode(name,0,true));
}

我会将单个功能分为两部分:

initialData() {
    this.route.params.subscribe(params => {
      this.upperFolderId = params['userid'];
      this.urlOfFolder = params['url']+'/'+this.upperFolderId;
      this.anotherFunction(this.urlOfFolder);
    });
  }

anotherFunction(data) {
    this.userService.getPatternMainFolder({'urlOfFolder' : data}).subscribe(
    (data) => {
     if(data != undefined && data != '' && data.payload != undefined && data.payload != ''){
    for(var i = 0 ; i < data.payload.length ; i++){
      this.rootLevelNodes.push(data.payload[i].folderName);
      console.log(this.rootLevelNodes);
    }
  }
  return this.rootLevelNodes;
  }
 )
}
initialData(){
this.route.params.subscribe(params=>{
this.upperFolderId=params['userid'];
this.urlOfFolder=params['url']+'/'+this.upperFolderId;
this.another函数(this.urlOfFolder);
});
}
另一个函数(数据){
this.userService.getPatternMainFolder({'urlOfFolder':data})。订阅(
(数据)=>{
如果(数据!=未定义和数据!=''&&data.payload!=未定义和&data.payload!=''){
对于(var i=0;i
而不是
this.rootLevelNodes=data.payload[i].folderName;
do
this.rootLevelNodes.push(data.payload[i].folderName)

这是异步调用!@PrashantPimpale我打印控制台,所以控制台外部是第一次打印,但如何解决这个问题?您想用那个变量做什么?想在HTML中使用还是调用api?@PrashantPimpale我想在HTML中使用,就像这样?-->
{rootLevelNodes | json}
我已经尝试在内部返回,因此它会出现如下错误[ts]声明类型既不是“void”也不是“any”的函数必须返回一个值。你能将函数拆分为两个吗?Pashant根据parshwa的回答,我推送并得到数组,但现在如何在第二个控制台中获取数组,在那里我得到空数组?它会给出这样的错误(声明类型既不是“void”也不是“any”的函数必须返回值。在另一个函数中)将另一个函数(数据):DynamicFlatNode[]替换为另一个函数(数据):{}谢谢parshwa我得到了数组,但现在如何获得外部范围我得到了数组null的数组你能创建stackblitz吗?parshwa在控制台中看到我问题的最后两行我得到了数组null,但我想在那里还有数组值Sparshwa我不知道如何创建和使用stackblitzTry
this.rootLevelNodes:string[]=[];
在构造函数中并检查