angular - 无法获取角度材料可扩展表中的所有键值
问题描述
我有一个像下面这样的json
[
{ naming: 'Captain America',
city:[
{"status":"inactive","age":30}
]
},
{ naming: 'Ironman',
bio:[
{"area":"usa","gender":"male"}
]
}
];
我正在尝试使用角材料在这里创建一个可扩展面板问题我能够“命名”键,但我无法查看另一个关键细节,我的意思是在第一个对象中我有“城市”作为键和在第二个对象中,我将 bio 作为关键。
在这里,我如何动态呈现这些键中的数据,以便我可以并排显示这些键和值下面是我的代码
<mat-accordion>
<mat-expansion-panel *ngFor="let value of avengers">
<mat-expansion-panel-header>
{{value.naming}}
</mat-expansion-panel-header>
<ng-container *ngFor="let x of value.city">
{{x}}
</ng-container>
</mat-expansion-panel>
</mat-accordion>
<hr>
stackblitz 网址:--> https://stackblitz.com/edit/dynamic-expansion-panel-5ragqy
解决方案
首先,您需要创建一个小管道来获取对象的不同键
import { Pipe, PipeTransform} from '@angular/core';
@Pipe({ name: 'keys', pure: false })
export class KeysPipe implements PipeTransform {
transform(value: any, args: any[] = null): any {
return Object.keys(value)
}
}
这将完成这项工作,但您需要将其添加到您的app.module.ts中,如下所示
@NgModule({
imports: [ // your different imports
],
declarations: [ // your declarations
KeysPipe
],
exports: [ // your exports
KeysPipe
]
})
最后,在您的component.html中,您需要编写这些行
<P>Avengers</P>
<mat-accordion>
<mat-expansion-panel *ngFor="let value of avengers">
<mat-expansion-panel-header>
{{value.naming}}
</mat-expansion-panel-header>
<ng-container *ngFor="let key of value | keys">
<ng-container *ngIf="key != 'naming'">
<ng-container *ngFor="let key_second of value[key][0] | keys">
{{value[key][0][key_second]}}
</ng-container>
</ng-container>
</ng-container>
</mat-expansion-panel>
</mat-accordion>
<hr>
所以像这样你有这个结果
推荐阅读
- typo3 - TYPO3 空体标签
- javascript - 每次循环通过条件的可能性呈指数级降低
- javascript - 使用 jquery 和 contenteditable="true" 更新值
- c# - 如何使用 Dapper.Contrib 在 .NET Core 中使用 xUnit 编写测试?
- mysql - MySQL MariaDB 服务器树莓派远程访问
- c++ - 使用 minijson-reader 库读取 json 字符串的问题
- python - Flask/Python - 如何使用来自多个 IP 摄像机的实时镜头填充 HTML 页面?
- opentok - OpenTok 按钮来控制视频
- java - 带有参数和单引号的自定义 HQL 函数
- python - 检查两个字符串之间的顺序是否保持不变