Ich versuche, eine Base64 von einem API zu bekommen. Der folgende Code funktioniert einwandfrei.Angular 2 async pipe auf eine Funktion
private test = null;
ngOnInit() {
this.loadCustomers();
this.test = this.getSiteImage();
}
getSiteImage() {
return this.CustomerService.getCustomerSiteImage('test.com').share();
}
<img class="avatar avatar-xl" src="{{ (test | async)?.image }}" alt="">
Aber ich möchte lieber eine Funktion verwenden. Wenn ich den Code der folgenden ändern:
getSiteImage(url) {
return this.CustomerService.getCustomerSiteImage(url).share();
}
<img class="avatar avatar-xl" src="{{ (getSiteImage('test.com') | async)?.image }}" alt="">
Ich mag wissen, warum dies nicht funktioniert, und wie kann ich dies richtig erreichen kann.
--------- EDIT:
Menschen in der Zukunft mit dem gleichen Problem zu helfen. So wie @thinkinkingmedia vorgeschlagen. Ich lege die Observablen in ein Objekt mit der URL als Schlüssel.
änderte ich die getSiteImage (url) Methode an:
getSiteImage(url) {
if (url in this.imageObservables) {
return this.imageObservables[url];
} else {
this.imageObservables[url] = this.CustomerService.getCustomerSiteImage(url).share();
return this.imageObservables[url];
}
}
Eigentlich übergeben Sie keine URL beim Aufruf Ihrer Methode – TheUnreal
Sie meinen in '(getSiteImage ('test.com')'? – KBeckers