Ich werde eine ID mit einem Rohr auflösen.ID in Rohr mit einem Service auflösen
Ich denke, es ist nicht der beste Weg, um den Service/api jedes Mal anrufen?
Ist es besser, alle Länder vorher zu speichern? Wie kann ich den Ländernamen innerhalb der Pipe zurückgeben?
Service:
getCountry(id:number) {
return this._http.get(this.apiUrl + "/country/" + id).map(res => res.json());
}
Rohr:
export class ResolvePipe implements PipeTransform {
constructor(public _formDataService: FormDataService) {}
transform(value: number, args: any[]): any {
this._formDataService.getCountry(value).subscribe(
data => console.log(data[0].name)
)
}
}
EDIT:
<tr (click)="showProfile(customer)" *ngFor="let customer of (customers | search:term)">
<td>...</td><td>{{customer.country_id | resolve | async}}</td>
</tr>
danke, funktioniert, aber es ist sehr langsam. Was kann ich tun, um die Leistung zu beschleunigen? – robert
Schwer von hier zu sagen, was langsam ist. Läuft die Antwort vom Server so lange? Wird das Pipe so oft ausgeführt, dass es Ihre Anwendung verlangsamt? Ich kann es von hier nicht sagen. Sie können einen Cache innerhalb von 'FormDataService' verwalten, wie in http://stackoverflow.com/questions/36271899/what-is-the-correct-way-to-share-the-result-of-an-angular-2- http-network-call-in –
Ja, es heißt 1000 mal. Ein Cache sollte dieses Problem lösen. – robert