У меня есть простое представление html с некоторыми ul и li. Но мне нужно получить ту же структуру с ngfor, используя массив jsonarray в коде. Вот код ниже https://stackblitz.com/edit/angular-eigvsq?file=src%2Fapp%2Fapp.component .тс
<div>
<ul>
<h5>Red</h5>
<li>1</li>
<li>2</li>
<li>3</li>
<h5>Blue</h5>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
import { Component, OnInit } from "@angular/core";
@Component({
selector: "my-app",
templateUrl: "./app.component.html",
styleUrls: ["./app.component.css"]
})
export class AppComponent {
name = "Angular";
jsonarray = {
id: "0001",
Red: [
{ id: "1001", Order: 1 },
{ id: "1002", Order: 2 },
{ id: "1003", Order: 3 }
],
Blue: [
{ id: "5001", Order: 4 },
{ id: "5002", Order: 5 },
{ id: "5005", Order: 6 }
]
};
ngOnInit() {}
}
<div>
<ul>
<ng-container *ngFor = "let data of jsonarray|keyvalue: originalOrder">
<ng-container *ngIf = "data.key !== id">
<h5>{{data.key}}</h5>
<ng-container *ngFor = "let fields of data.value">
<li>{{fields.Order}}</li>
</ng-container>
</ng-container>
</ng-container>
</ul>
</div>
Рабочий стекблиц: -
https://stackblitz.com/edit/angular-ge4vjn?file=src/app/app.component.html
Во-первых, вам нужно оставить только те значения, которые вы хотите отобразить в шаблоне, я имею в виду удаление поля id: '0001'
из вашего свойства jsonarray. Затем в шаблоне вы можете использовать keyvalue pipe:
<ul>
<ng-container *ngFor = "let item of jsonarray | keyvalue">
<h5>{{item.key}}</h5>
<li *ngFor = "let subItem of item.value">
{{subItem.Order}}
</li>
</ng-container>
</ul>
Если вы знаете, что вам нужен
ngFor
, то почему вы не пишете с помощьюngFor
? Или вы хотели, чтобы кто-то написал это для вас?