Javascript 如何在angular 2中迭代此json响应

Javascript 如何在angular 2中迭代此json响应,javascript,json,angular,Javascript,Json,Angular,我从一个服务得到以下响应,其中包括json模式格式的表单定义 现在我想在角度分量中迭代这个响应 因此,我在一个Formdata变量中获取了所有类似的模式元素 res['tabs'].forEach(element => { this.tablist.push(element); }); this.tablist.forEach(element => { this.F

我从一个服务得到以下响应,其中包括json模式格式的表单定义

现在我想在角度分量中迭代这个响应

因此,我在一个Formdata变量中获取了所有类似的模式元素

          res['tabs'].forEach(element => {
              this.tablist.push(element);

            });


       this.tablist.forEach(element => {

            this.FormData[element] = res['com'][element]['schema'];
            this.FormValueData[element] = res['com'][element]['data'];
            this.FetchValueParam[element] = res['com'][element]['data'];
        });
现在我想在side a视图中访问Formdata的值,并为此编写了以下代码

                  <form>
                      <div *ngFor='let input1 of FormData[element]['properties']'>

                        <label [for]='input1.type'> input1.title</label>
                        <input type='input1.type' [name]='input1.title' 
                       [placeholder]='something'>
                        <br>
                      </div>
                      <br><br>
                      <button type="submit"> Submit </button>



                   </form> 
更新:当我使用像这样的伪json对象时。我正在得到期望的结果。所以我得到的是,ngFor预期的类型和我作为json对象提供的类型之间存在严重的不匹配

               this.inputfield=
             [{type:'email',name:'email',value:'',placeholder:"your email here"},
            {type:'email',name:'email',value:'',placeholder:'your email 
               here'},{type:'email',name:'email',value:'',placeholder:'your 
                 email here'},
            {type:'email',name:'email',value:'',placeholder:'your email 
                here'},{type:'email',name:'email',value:'',placeholder:'your 
              email here'},
             {type:'email',name:'email',value:'',placeholder:'your email 
               here'},{type:'email',name:'email',value:'',placeholder:'your 
             email here'},
             {type:'email',name:'email',value:'',placeholder:'your email 
             here'},{type:'email',name:'email',value:'',placeholder:'your 
             email 
             here'}{type:'email',name:'email',value:'',placeholder:'your 
              email here'}]; 
当我在json模式验证器中检查两者之间的差异时, 我在控制台中显示的前一个是作为对象出现的,但上面显示的是数组


所以要么发送数组而不是对象,要么在运行时基于上述json模式创建一个数组或类。做什么更好

假设this.tablist是一个字符串数组,您可以将在此.FormData[element]中创建的对象更改为数组:

    this.tablist.forEach(element => {
        Object.keys(res['com'][element]['schema']['properties']).forEach(inputKey => {
            this.FormData[element] = [];
            this.FormData[element].push(res['com'][element]['schema']['properties'][inputKey]);
        }
        this.FormValueData[element] = res['com'][element]['data'];
        this.FetchValueParam[element] = res['com'][element]['data'];
    });
然后在模板中使用它,如下所示

此外,您没有在此行中使用属性绑定权限(即如果组件中没有名为某物的变量):

[占位符]='something'>

应该是


[placeholder]=“something”>

JSON响应不是数组,它是一个巨大的对象,您正在尝试遍历“properties”对象。你不能这样做,好吧,那么如何将其转换为数组?有什么方法可以直接执行吗???在服务器端获取属性对象时,可以将其转换为数组吗?为什么需要将其转换为数组?正如我从那张图片中看到的(发布图片不是一个好主意),没有重复,你不需要循环浏览,你可以这样访问它:
FormData[element][properties'].accountcatalogid.title,FormData[element][properties'].bankaccountname.title
等。如果属性是映射,则需要找到遍历映射的方法:当我应用上述更改时。控制台显示“_this.FormData[element].properties.push不是函数”您可以在forEach函数下面声明它:
this.FormData[element]['properties']=[]
当我尝试此操作时。FormData[element]['properties']=[];它说不能在未定义的上设置“属性”。当我删除[element]并访问这个.FormData['properties']中的数据时,它起了作用。但我需要确定[元素]。我错过了什么?我离我想要实现的目标只有一步之遥。我真的不知道为什么我会按照你的建议这样做;它显示了一个错误,这里定义了“不能在未定义的元素上设置'properties',我可以在控制台中获得它。我很高兴,您能将我的答案标记为正确吗?
    this.tablist.forEach(element => {
        Object.keys(res['com'][element]['schema']['properties']).forEach(inputKey => {
            this.FormData[element] = [];
            this.FormData[element].push(res['com'][element]['schema']['properties'][inputKey]);
        }
        this.FormValueData[element] = res['com'][element]['data'];
        this.FetchValueParam[element] = res['com'][element]['data'];
    });