arrays - 在数组数组中获取属性
问题描述
我有接收数组数组的 ngx-datatable,如下所示:
{0: Array(1)
0:
alert: null
areEquals: true
key: "Payment Date"
order: 0
readOnly: false
subCollection: null
valueMaster: "06/11/2020 00:00:00"
valueSlave: "06/11/2020 00:00:00"
__proto__: Object
length: 1
__proto__: Array(0)},
{ 1: Array(1)
0:
alert: null
areEquals: true
key: "Payment Date"
order: 0
readOnly: false
subCollection: null
valueMaster: "08/02/2021 00:00:00"
valueSlave: "08/02/2021 00:00:00"
__proto__: Object
length: 1
__proto__: Array(0)
}
我正在尝试使用 valueMaster 和 valueSlave 属性创建一个表,它们位于数组 0 内,它存在于所有数组中。到目前为止我在做什么:
<ngx-datatable
class='table mt-0 table-hover table-stripped'
[rows]="paymentFlow"
[messages]="''"
[columnMode]="'force'"
[sorts]="[{prop: propSort, dir: 'asc'}]"
[rowHeight]="getRowHeight">
<ngx-datatable-column name="Base Gai" prop="valueMaster">
<ng-template let-value="value" ngx-datatable-cell-template>
{{value}}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Cln" prop="valueSlave">
<ng-template let-value="value">
{{value}}
</ng-template>
</ngx-datatable-column>
</ngx-datatable>
但是表返回空,我相信为什么我必须进行先前的迭代,才能准确地获得 [0],这是属性所在的位置。有人可以告诉我该怎么做吗?
解决方案
您基本上有一个数组数组,并且数组中的每个项目的长度肯定为 1,对吗?因此,在单元格模板中,您的行基本上是一个数组,而不是一个对象,您需要访问row[0].valueMaster
or row[0].valueSlave
,具体取决于列。
您可以通过定义这样的模板来做到这一点:
<ngx-datatable-column name="Value master">
<ng-template let-row="row" ngx-datatable-cell-template>
{{row[0].valueMaster}}
</ng-template>
</ngx-datatable-column>
<ngx-datatable-column name="Value slave">
<ng-template let-row="row" ngx-datatable-cell-template>
{{row[0].valueSlave}}
</ng-template>
</ngx-datatable-column>
请注意,这些列无法排序。ngx-datatable 上的 sort 方法意味着 prop 应该是对象的直接属性,因此您访问数组中的属性这一事实将不允许您进行排序。
我建议在获取数据后修改您的结构,方法是仅将每个数组的第一项添加到行中,然后像在初始尝试中那样使用模板,如果您不需要其他部分的数组的其他元素你的桌子。
假设您的 GET 请求的结果是:
data = [
[
{
alert: null,
areEquals: true,
key: "Payment Date",
order: 0,
readOnly: false,
subCollection: null,
valueMaster: "06/11/2020 00:00:00",
valueSlave: "06/11/2020 00:00:00"
}
],
[
{
alert: null,
areEquals: true,
key: "Payment Date",
order: 0,
readOnly: false,
subCollection: null,
valueMaster: "08/02/2021 00:00:00",
valueSlave: "08/02/2021 00:00:00"
}
]
];
像这样构造您的rows
数组:this.rows = this.data.map(item => item[0]);
并使用您提供的模板,这将支持按valueMaster
和valueSlave
属性排序。
推荐阅读
- android - 如何修复“必需的 MutableLiveData
但“SwitchMap”被推断为 LiveData " 使用 Transformations.switchMap 时? - swift - Swift 4:“(SomeUIViewController)->()->(SomeUIViewController)”类型的值没有成员“someMemberItem”
- python - 从预先计算的一组绘图中创建动画:ArtistAnimation
- react-native - 每次系统重启时都需要设置 JAVA_HOME 变量吗?
- database - 在 Laravel 5.7 中以链式关系播种
- macos - 我的 Mac 上的 Spyder 最近停止工作,并在我启动它后立即向终端发送错误消息
- django - 用法:py [-x] [-l] [-c PRE_CMD] [-C POST_CMD] [-V] [-h] [表达式]
- c++ - 访问 std::list 元素会被核心转储
- html - 如何使用 CSS 覆盖内联样式?
- c++ - 在 openFrameworks 中,是否可以在使用 ofxPiMapper 时更改我的 fbo 源的不透明度?