首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >User one @Pipe for two treatment

User one @Pipe for two treatment
EN

Stack Overflow用户
提问于 2017-12-06 01:41:06
回答 0查看 57关注 0票数 1

我想创建一个简单的表,带有我的项目的名称,一个将接受"key“配置的列,最后在同一行上与"key”和<th>关联的值​​。

但是我使用@Pipe通过删除重复项来过滤我的键,但是我不知道如何绑定与键关联的值​​。

下面是我的代码,希望我的解释是正确的

config.json:

代码语言:javascript
复制
[ { "id": "dev",
    "values": [ { 
      "name": "password",
      "value": "root-default://dev" },
      
      { "name": "env",
        "value": "env-default://dev" },
        
       { "name": "user",
         "value": "toto-default://dev" },
         
       { "name": "element",
          "value": "element-default://dev" } 
        ] },
      
      { "id": "test",
        "values": [ { 
        "name": "password",
        "value": "root-default://test" },
        
       { "name": "env",
         "value": "env-default://test" },
         
       { "name": "user",
         "value": "toto-default://test" },
         
       { "name": "element",
         "value": "element-default://test" } 
        ] },
        
       { "id": "toto",
        "values": [ {
          "name": "password",
          "value": "root-default://toto" },
          
          { "name": "env",
            "value": "env-default://toto" },
            
          { "name": "user",
            "value": "toto-default://toto" },
            
          { "name": "element",
            "value": "element-default://toto" } 
           ] }
 ]

我的Html:

代码语言:javascript
复制
<ng-container *ngIf="service && config">
  <table style="color: white; background-color: red;">
    <tr>
      <th></th>
      <th *ngFor="let item of service.configs">{{item.name}}</th>
    </tr>

    <ng-container *ngFor="let key of (config | keys); let i = index">
        <tr>
          <td>{{key}}</td>
        </tr>
    </ng-container>
  </table>
</ng-container>

我的@管道:

代码语言:javascript
复制
import {Pipe, PipeTransform} from '@angular/core';

@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
    transform(value: any) {
        let listConf = [];
        let result = [];
        if(! value){
            return result;
        }

        for (let obj in value){
            let item = value[obj];
            if (result.indexOf(item.values) < 0) {
                listConf.push(item.values);
            }
        }

        for (let values in listConf) {
            let value = listConf[values];

            for (let items in value) {
                let item = value[items];
                if (result.indexOf(item.name) < 0) {
                    result.push(item.name);
                }
            }
        }

        return result;
    }
}

为了显示服务,我使用了另一个对象“<th>”,它列出了配置的名称

Service.json

代码语言:javascript
复制
{ 
  "configs": [ 
      {"name": "dev"},  
      {"name": "test"},
      {"name": "toto"} 
  ]
}

我的问题是:如何在同一个@​​中拥有一个键数组和一个值数组​​

我使用以下代码得到的结果:

Result table

EN

回答

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

https://stackoverflow.com/questions/47659574

复制
相关文章

相似问题

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