Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Json 如何在表中显示{object}?_Json_Angular_Tabular_Ngfor - Fatal编程技术网

Json 如何在表中显示{object}?

Json 如何在表中显示{object}?,json,angular,tabular,ngfor,Json,Angular,Tabular,Ngfor,实际上,我想显示到一个表中。这里的数据是{object}。我想显示所有货币的“上次”、“买入”和“卖出”的所有值。我可以编写硬代码,但我想通过使用ng repeat或ngFor来减少代码行数。如何编写此操作的条件 我使用的是Angular 4。您需要创建一个管道,然后可以遍历对象 @Pipe({ name: 'ObjNgFor', pure: false }) export class ObjNgFor implements PipeTransform { transform(valu

实际上,我想显示到一个表中。这里的数据是{object}。我想显示所有货币的“上次”、“买入”和“卖出”的所有值。我可以编写硬代码,但我想通过使用ng repeat或ngFor来减少代码行数。如何编写此操作的条件


我使用的是Angular 4。

您需要创建一个管道,然后可以遍历对象

@Pipe({ name: 'ObjNgFor',  pure: false })
export class ObjNgFor implements PipeTransform {
    transform(value: any, args: any[] = null): any {
        return Object.keys(value)//.map(key => value[key]);
    }
}
这个plnkr可能会帮助你


ngFor在iterables上工作,因此在您的情况下,需要首先将json数据转换为数组

let blockChainData:any = { ... } //data.retrieved.from.server;
let blockChainDataArray:Array<any> = [];

let dataKeys:Array<string> = Object.keys(blockChainData);
dataKeys.forEach((key:string) => {
   let entry:any = blockChainData[key]; // Retrieve the object associated with the currency
   entry.originalCurrency = key; // Preserve the original currency
   blockChainDataArray.push(entry);
});
let blockChainData:any={…}//data.retrieve.from.server;
让区块链数据数组:数组=[];
让dataKeys:Array=Object.keys(区块链数据);
dataKeys.forEach((键:字符串)=>{
let entry:any=blockChainData[key];//检索与货币关联的对象
entry.originalCurrency=key;//保留原始货币
blockChainDataArray.push(条目);
});
在html代码中,迭代数组

<td *ngFor="let entry of blockChainDataArray">{{ entry.originalCurrency }} {{ entry.buy }} {{ entry.sell }} {{ entry.last }} </td>
{{entry.originalCurrency}{{entry.buy}{{entry.sell}{{entry.last}

谢谢各位的回复,你们的方式很好。但我找到了更简单的方法:

function generateArray(obj) {
  return Object.keys(obj).map((key) =>  obj[key] );
}
这将把json对象转换为数组和

<tr *ngFor="let post of posts">
            <td>{{post.last}}</td>
            <td>{{post.buy}}</td>
            <td>{{post.sell}}</td>  
          </tr>

{{post.last}}
{{post.buy}
{{post.sell}
这将把json迭代到一个表中


附言:我已将json从“posts”保存到名为“obj”的“posts”中。

您尝试了什么代码?实际上,我不知道在这种情况下如何迭代。因为,对象在对象内部。如果它是一个数组,我可以使用ngFor。您可以尝试将此对象转换为数组,然后使用*ngFor进行迭代。我不建议这样做。另外,因为只有三个值,所以代码长度并没有减少很多,可读性也差得多。@Christian,我想你没有理解我的问题。顺便说一句,我得到了一些答案,现在正在研究它。请参见下面答案中的plnkr示例。这正是我需要的。我不会用纯:假。这样,每次值更改后,管道都会再次执行。