【发布时间】:2021-03-24 22:17:52
【问题描述】:
我正在尝试从另一个数组的结果中检查一个数组中的一个值,并将一个键放入对象中,以便我可以在我的屏幕上创建一个 ngfor 并带来这些值,但我没有得到它。我需要在服务器数组中创建卷键,getVolumes 端点返回一个包含附件键的对象数组,其中包含 server_id 键,该卷所在的服务器 ID 在哪里。我只需要带上包含 name 键值的卷,但结果是一个空数组。你能帮帮我吗?
我的代码
ngOnInit(): void {
forkJoin(this.serverService.getServer(),
this.storage.getVolumes())
.pipe(takeWhile(() => this.alive))
.subscribe(([servers, volumes]) => {
this.volumes = volumes;
this.servers = servers.map((server) => ({
...server,
volumes: this.volumes.map((volume) => {
volume['attachments'].map((volumeId) => {
console.log(volumeId)
volumeId['server_id'] === server.id ? volumeId : 'None';
console.log(this.servers)
})
})
}))
})
}
我的html代码:
<ng-container *ngFor="let volume of volumes">
<tr *ngIf="volume?.name.length > 2" (click)="selectVolume = volume">
<td>
<div class="user-info">
<div class="user-info__img">
<img src="./assets/img/storages.svg" alt="UserImg">
</div>
<div class="user-info__basic">
<h5 class="mb-0">{{volume.name}}</h5>
</div>
</div>
</td>
<td >{{volume.size}} GB</td>
<td>
<span *ngFor="let attachedVolume of servers.volumes">
{{attachedVolume.name}}
</span>
</td>
</ng-container>
我对 Volume API 的回应:
{
"id": "939b1432-13f7-41ff-b9d2-908b25499c99",
"name": "",
"size": 10,
"status": "in-use",
"volume_type": "__DEFAULT__",
"attachments": [
{
"id": "939b1432-13f7-41ff-b9d2-908b25499c99",
"server_id": "1879f47f-1c5e-464b-bb76-e7cc13ef426e",
"attachment_id": "5749f842-5dff-48ac-ac57-2a6bfb806ad5",
"volume_id": "939b1432-13f7-41ff-b9d2-908b25499c99",
"device": "/dev/vda",
}
]
},
{
"id": "bd91e685-bdd4-4bb8-b25d-18e91f458fb8",
"name": "Test01",
"size": 20,
"status": "in-use",
"volume_type": "__DEFAULT__",
"attachments": [
{
"id": "bd91e685-bdd4-4bb8-b25d-18e91f458fb8",
"server_id": "1879f47f-1c5e-464b-bb76-e7cc13ef426e",
"attachment_id": "f4cd9033-dd6e-4d47-88a7-904c267f162f",
"volume_id": "bd91e685-bdd4-4bb8-b25d-18e91f458fb8",
"device": "/dev/vdc"
}
]
},
{
"id": "97b800c5-1061-4a38-b7ec-c4528f248f72",
"name": "",
"size": 20,
"status": "in-use",
"volume_type": "__DEFAULT__",
"attachments": [
{
"id": "97b800c5-1061-4a38-b7ec-c4528f248f72",
"server_id": "b9c7e32a-bf99-4250-83cb-13523f9c1604",
"attachment_id": "c0cd7598-69ba-4ce8-8407-aef68219a00d",
"volume_id": "97b800c5-1061-4a38-b7ec-c4528f248f72",
"device": "/dev/vda",
}
]
},
我的服务器 API 响应
{
"id": "1879f47f-1c5e-464b-bb76-e7cc13ef426e",
"name": "olakital",
"flavor": {
"id": "21f46a72-7f4f-40c5-9f1f-0100fadbc226",
"disk": "10",
"ram": "4000",
"swap": "",
"vcpus": "4"
}
},
{
"id": "b9c7e32a-bf99-4250-83cb-13523f9c1604",
"name": "teste01",
"flavor": {
"id": "59fc4d83-156d-4aa6-84a7-ea1c90d0fde5",
"disk": "20",
"ram": "8",
"swap": "200",
"vcpus": "4"
}
}
【问题讨论】:
标签: javascript arrays angular ng-bootstrap