Recurrsion不在Angular

时间:2016-02-19 16:01:06

标签: angular typescript

我在角度方面遇到了奇怪的行为。

我正在尝试遍历将从Web服务返回的嵌套json对象。

以下是我的网络服务

@CrossOrigin
@RequestMapping(value="service/admin/getPageComponents",method=RequestMethod.POST,headers="Accept=application/json")
public ResponseData getPageComponents(@RequestParam Map<String, String> reqMap){
    Address addressp=new Address("Uni", "Tatooine");
    Student a=new Student("LukeSkywalker", "34", addressp);
    List<Student> li=new ArrayList<>();
    li.add(a);
    List<String> h=new ArrayList<>();
    h.add("name");
    h.add("age");
    h.add("add.city");
    return new ResponseData(li, h);
}

我只想打印学生的姓名,年龄和城市数据。因此,我将单独传递标题数据。

在我的打字稿方面,我将我的学生列表映射到tableData的列和标题列表到tableData的标题。

以下是我在html中访问此内容的方式,

<tr *ngFor="#column of tableData.columns " (click)="onRowSelect(column)" highlight>
    <td *ngFor="#key of tableData.header" >{{getText(column,key)}}</td>
</tr>

在我的Typescript类中,

  getText(column,key:string){
        console.log(key+" : "+column[key]);
        if(key.indexOf(".")!=-1){

           var firstKey = key.substring(0, key.indexOf("."));
            var remainingKey=key.substring( key.indexOf(".")+1,key.length);
            let jsonObj:any=column[firstKey];
            console.log('|| '+firstKey+' || '+remainingKey+' || '+jsonObj)
            this.getText(jsonObj,remainingKey);

            // below code works as expected 
            /*
            let arr=key.split(".");
            let jsonO:any=column[arr[0]];
            return jsonO[arr[1]];*/

        }else{
            console.log("returning "+column[key]);
            return column[key];    
        }

    }

当我取消注释非recurssion部分并对recurrsion进行评论时,代码按预期工作,我在我所在城市的专栏中获得了“Uni”。

然而,当我使用recurssion部分时,我能够在console.log中看到数据但在页面上没有。该列是空白的。

有人可以告诉我我做错了什么吗?

由于

1 个答案:

答案 0 :(得分:1)

我建议你在递归调用中添加return

getText(column,key:string){
    if(key.indexOf(".")!=-1){
        ...
        return this.getText(jsonObj,remainingKey); // Right here
    } else {
        return column[key];    
    }
}