Holen Sie sich Daten Über die ID in Eckigen 2/4
Ich habe eine Liste mit Bestellungen und ich möchte eine weitere Komponente, die die details der jeweiligen Bestellung. Wie kann ich die details zu jeder Bestellung, indem man seine id? Ich brauche die Anzeige der material_purchase_orders, indem man die purchase_order.id. Durch klicken auf die viewDetail(), es navigiert mich auf die neue Komponente und zeigt die konkreten Bestellung detail
html
<div class="card-block" *ngFor="let order of orders">
<h2 class="proj-name">{{ order.name }}</h2>
<table>
<thead>
<tr>
<th>Transaction Date</th>
<th>Reference Number</th>
<th>Grand Total</th>
<th>Action</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let inner of order.purchase_orders">
<td>{{ inner.transaction_date }}</td>
<td>{{ inner.reference }}</td>
<td> {{ inner.total }} ringgit </td>
<td><button type="submit" class = "btn btn-sm btn-primary" (click)="viewDetail(inner.id)"><i class="fa fa-angle-right" aria-hidden="true"></i> View More Details</button></td>
</tr>
</tbody>
</table>
</div>
ts
getAllOrders(){
this.subscription = this.purchaseOrderService.getAll()
.subscribe(
(data:any) => {
this.orders = data.purchaseOrders;
console.log(data);
},
error => {
console.log(error);
});
}
viewDetail(id){
this.router.navigate(['orders', id]);
}
service.ts
getAll() {
if(!this.orders) {
this.orders = this.httpClient.get<any>(this.url)
.map((response => response))
.publishReplay(1)
.refCount();
}
return this.orders
}
- Was ist das Thema Ihrer vor hier? haben Sie zusätzliche routing-für detail-Ansicht?
- Ja, ich habe das routing. Das problem ist, wie bekomme ich die Daten der einzelnen Bestellung? Wie kann ich mit der id?
- dann können Sie die Nutzung des service zum übergeben von Daten an detail-Komponente und finde den Artikel von Id,
- ah, dann können Sie den Benutzer-service zum senden von Daten zwischen den Komponenten
- Können Sie mir helfen mit, dass?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie versuchen, zu erhalten, ist ein Element aus einer verschachtelten Arrays innerhalb eines Arrays. Ich sehe das gehandhabt werden kann in ein paar Möglichkeiten.
Könnte man speichern, die gewählt, um in einem service und Holen Sie es, wenn
navigieren Sie zu der detail-Seite. Nachteil ist, dass die Daten nicht verfügbar
auf der Seite aktualisieren.
Wenn Sie die Kontrolle über backend, könnten Sie tun,, so dass die ausgewählte Reihenfolge
kann der Wert aus der db direkt basierend auf id. (Dies wäre mein
Wahl)
Wenn Sie nicht die Kontrolle über das backend, sehe ich, dass Sie brauchen, um
die Iteration der
orders
und dann dieinner
zu finden, um passendedie so gewählte Reihenfolge.
Also für die Letzte Möglichkeit, Ihr code sollte wie folgt Aussehen:
und in Ihrem detail-Komponente, wie Dimithu, erhalten wir die parameter und rufen
getOrder
:DEMO
return data.purchase_orders.find(x => x.id === id)
Recht, wenn ich das richtig verstehe. Versuchen Sie, dass 🙂find
ganz vielleicht und nur speichern Sie das gewählte Element in service und Holen Sie es von dort. Halten Sie auf, ich guck in den code 🙂*ngIf="order"
auf die gesamte div oder dannorder?.material_purchase_orders
im template, wo die Bestellung ist der name der Variablen, die Sie benannt haben, in Ihrer detail-Seite. Check this: Winkel.io/guide/...service.ts
fügen Sie diese Methode zum service.ts-Datei
verwenden parameter Lesen in der Detailansicht, mit diesem
}
für mehr details Lesen Sie bitte in dieses source code https://github.com/johnpapa/angular-tour-of-heroes/tree/master/src/app