ai didi

javascript - 使用方括号表示法访问具有 "n"级深度对象的嵌套对象

转载 作者:行者123 更新时间:2023-12-03 07:12:29 24 4
gpt4 key购买 nike

我想使用一些配置对象来显示一些嵌套数据。这里是 demo code

可以看出,"customer.something" 是我需要访问的内容。现在可能有“N”级嵌套。网格使用 field='customer.something' 来处理它。如何使用我的模板

做同样的事情
<e-column field='customer.something' headerText='Other' editType='dropdownedit' [edit]='editParams' width=120>

这是 HTML 文件:

<ejs-grid #Grid [dataSource]='data' allowSorting='true'>
<e-columns>
<ng-template #colTemplate ngFor let-column [ngForOf]="colList">
<e-column [field]='column.field' [headerText]='column.header' textAlign='Right' width=90>
<ng-template #template let-data>
{{data[column.field] | currency:'EUR'}} <-- want to fix this line
</ng-template>
</e-column>
</ng-template>
</e-columns>
</ejs-grid>

<!-- <ejs-grid #Grid [dataSource]='data' allowSorting='true'>
<e-columns>
<e-column field='price' isPrimaryKey='true' headerText='Price' textAlign='Right' width=90></e-column>
<e-column field='customer.something' headerText='Other' editType='dropdownedit' [edit]='editParams' width=120>
</e-column>
</e-columns>
</ejs-grid> -->

最佳答案

您可以使用管道通过字符串路径获取字段值。像这样:

@Pipe({name: 'fieldFromPath'})
export class FieldFromPathPipe implements PipeTransform {
transform(data: Object, property: string): Object {
property = property.replace(/\[(\w+)\]/g, '.$1');
property = property.replace(/^\./, '');
var a = property.split('.');
for (var i = 0, n = a.length; i < n; ++i) {
var k = a[i];
if (k in data) {
data = data[k];
} else {
return;
}
}
return data;
}
}

在模板上:

<ng-template #template let-data>
{{data | fieldFromPath: column.field | currency:'EUR'}}
</ng-template>

这是它的样子:

https://stackblitz.com/edit/angular-ej2syncfusion-angular-grid-jqm2kz

PS:我得到了从这个 stackoverflow 答案的字符串路径中获取属性值的函数:Accessing nested JavaScript objects and arrays by string path

还有其他方法可以获取,也许有一些更好。

关于javascript - 使用方括号表示法访问具有 "n"级深度对象的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64911518/

24 4 0
文章推荐: javascript - 使用 useRoutes 时如何将 props 传递给路由组件?
文章推荐: javascript - 如何使用 vanilla JS 实现可维护的响应式(Reactive) UI
文章推荐: javascript - webpack 公共(public) block 中的入口点
文章推荐: javascript - 客户端(JS-Browser)和服务器(PHP)通过 Web-Socket 通过 IP 进行通信
行者123
个人简介

我是一名优秀的程序员,十分优秀!

滴滴打车优惠券免费领取
滴滴打车优惠券
全站热门文章
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com