角度动态关键对象评估

时间:2019-03-07 07:54:33

标签: angular

如何评估对象内部的动态字符串键?

{{ row["emails.email"] }}

emails.email是动态产生的。

emails.email是一个字符串

就像ag-grid一样,如果您在json中传递字段

{
      "field": "emails.email",
      "title": "Email",     
},

Data Like
"emails": {
        "is_primary": true,
        "email": "dhiraj.pandya@ymail.com"
      }

在渲染时,它将转换为电子邮件值。

3 个答案:

答案 0 :(得分:1)

您可以创建一种方法,从这样的路径的对象库中提取数据

 getData(o , path) { 
  let result =o;

   for(let p of path.split('.')){
       if ( result[p] == undefined) {
         return null;
       }
       result = result[p]
    }

      return result
    }

模板

 {{getData(row,'emails.email')}}

此管道版本

@Pipe({
  name: 'getValue'
})
export class GetValuePipe implements PipeTransform {

  transform(obj: any, path: string): any {
    let result = obj;

    for (let p of path.split('.')) {
      if (result[p] == undefined) {
        return null;
      }
      result = result[p]
    }

    return result
  }

}

模板

  {{data | getValue : fieldPath}}

stackblitz demo

答案 1 :(得分:0)

不太了解您的意思,但听起来您只是想显示电子邮件:

{{ row.emails.email }}

答案 2 :(得分:0)

我认为您应该应用if支票,例如:

<p *ngIf="field == 'emails.email'">{{ data.emails.email }}</p>

主要取决于您要显示的数据。另一种情况是:

let emails = { email: 'test@test.com' }; {{ row[emails.email] }}