Angular 角度动态关键点对象求值

Angular 角度动态关键点对象求值,angular,Angular,如何计算对象内部的动态字符串键 {{row[emails.email]} 电子邮件。电子邮件是动态的 email.email是一个字符串 和ag网格一样,如果您在json中传递字段 { "field": "emails.email", "title": "Email", }, Data Like "emails": { "is_primary": true, "email": "dhiraj.pandya@ymail.com"

如何计算对象内部的动态字符串键

{{row[emails.email]}


电子邮件。电子邮件是动态的

email.email是一个字符串

和ag网格一样,如果您在json中传递字段

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

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

渲染时,它将评估为电子邮件值。

我不太明白你的意思,但听起来你只是想这样做来显示电子邮件:

{{ row.emails.email }}

我认为你应该申请一个if检查,比如:

<p *ngIf="field == 'emails.email'">{{ data.emails.email }}</p>
主要取决于您试图显示的数据。另一种情况是:

让电子邮件={ 电邮:'test@test.com' };
{{row[emails.email]}

您可以创建一个方法,从路径的对象库中提取数据,如下所示

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

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

      return result
    }
模板

这是管道版本

@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
  }

}
模板


stackblitz demopass变量在方括号内,不带引号[],如{{row[emails.email]}我已经更新了我的答案,您需要一种方法来获取上述电子邮件路径的数据库。电子邮件是一个字符串而不是对象。能否请您共享您试图在插值中显示的数据结构部分,以便我能更好地理解它。电子邮件是动态的。email.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}}