首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular :如何转换数组中的值并获取外部作用域中的值?

Angular :如何转换数组中的值并获取外部作用域中的值?
EN

Stack Overflow用户
提问于 2019-01-02 20:14:24
回答 2查看 147关注 0票数 2

在这里,在DynamicDatabase类中,我从服务器获取值并在console.log(this.rootLevelNodes) // folder-1 folder-2 folder-3 folder-4中获取,参见下面的代码,但我想要数组中的值。然后在this.route之外,我打印console.log(this.rootLevelNodes) // there I got null [] (this.rootLevelNodes) in function but I dont know why I got null result,但是在哪里,我也想要数组格式的结果,怎么可能看到我的下面的代码,并帮助我?

代码语言:javascript
复制
@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));
  }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-02 20:26:06

我会将单个函数分成两部分:

代码语言:javascript
复制
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;
  }
 )
}
票数 1
EN

Stack Overflow用户

发布于 2019-01-02 20:30:45

this.rootLevelNodes.push(data.payload[i].folderName);代替this.rootLevelNodes = data.payload[i].folderName;

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54006189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档