首页
学习
活动
专区
圈层
工具
发布

管json角2
EN

Stack Overflow用户
提问于 2016-07-14 12:11:39
回答 1查看 727关注 0票数 0

我用的是定制的管子

代码语言:javascript
复制
@Pipe({name: 'keys'}) class KeyPipe implements PipeTransform { 
transform(value, args:string[]) : any { 
      let keys = [];
      console.log(value);
      for (let key in value) { 
          keys.push(key); 
      }
      console.log(keys);
      return keys; 
} 
}

用于解析对象json文件。

代码语言:javascript
复制
"system":
         {
              "memory":
              {
                   "total":12425734566,
                   "used":4725959680,
                  "free":8947874816,
                  "actualfree":4221499392,
                 "actualused":452335104,
                 "swaptotal":4296819712,
                 "swapused":0,
                 "swapfree":4296819712
               },
               "uptime":" 12 days,  4:09",
               "loadaverage":"0.00 0.00 0.00",
              "cpu":
              {
                   "vendor":"GenuineIntel",
                   "family":"6",
                   "model":"Intel(R) Xeon(R) CPU           E5620  @ 2.40GHz",
                   "rate":"2399.971",
                   "numofcores":4
               }

如何为此表添加*ngFor并显示“内存”对象,以及如何正确地语法?

代码语言:javascript
复制
<table>
<thead>
            <tr>
                <th>Общая память</th>
                <th>Общая используемая память</th>
                <th>Свободная память</th>
                <th>Используемая память размера подкачки</th>
            </tr>
        </thead>
        <tbody>
            <tr *ngFor="let service_rec of list.system.memory | keys">
                <td>{{ service_rec.total | keys}}</td>
                <td>{{ service_rec.used | keys}}</td>
                <td>{{ service_rec.free | keys}}</td>
                <td>{{ service_rec.actualfree | keys}}</td>
            </tr>
        </tbody>
    </table>

该代码没有显示“内存”的数据。我怎么能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-14 14:30:16

更新,所以我以前没有看到的是,您正在将过滤器应用到"*ngFor“。我只注意到过滤器应用于"< td >“元素。现在事情变得更有意义了。实际上,您不希望对"< td >“元素应用筛选器,这意味着它试图两次转换数据(一次在Array中的每个对象上,然后对对象的属性进行转换)。

现在我对你想做的事情有了更好的了解,我做了一个示例柱塞。这演示了如何在没有管道和管道的情况下实现您想要的目标。

语法看起来很好,除了管道名称与用法不匹配。您可以将管道名称标识为"key“,但当您在html中使用管道时,则将其称为”key“。

但我不能说这会解决整个问题,因为我不知道为什么要在transform方法的Type number上使用"for“属性迭代器。我会将一些数据记录到transform方法中的控制台,以确保它正在运行,并创建您期望的结果。

代码语言:javascript
复制
@Pipe({name: 'keys'}) class KeyPipe implements PipeTransform { 
    transform(value, args:string[]) : any { 
          let keys = [];
          console.log(value);
          for (let key in value) { 
              keys.push(key); 
          }
          console.log(keys);
          return keys; 
    } 
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38373895

复制
相关文章

相似问题

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