ich nach einem Weg suchen eine loading bar component
auf einem observable stream
zu benutzen?Angular 2: Ladebalken Komponente mit beobachtbaren Strömen
Ich habe eine component
, die Daten von observable
unter Verwendung der async pipe
anzeigt. Dieses Observable kann auch die Daten manipulieren, z. B. mit map.
Zur Zeit habe ich diese in der Komponente:
this.listData$ = this.http.get('/itemList')
.map(data => this.manipulate(data))
und in Vorlage:
{{listData$ | async}}
Der Server die Daten als empty []
zurückkehren kann, 'unavailable'
oder array
von Elementen.
Wie kann ich in den Strom tippen und eine Ladekomponente zuzuführen, die eine Ladebalken angezeigt werden würde, wenn die Daten geladen werden, und Fehlermeldungen anzeigen, wenn sie leer oder nicht verfügbar ist? Etwas nach dem Vorbild von ...
this.listData$ = this.http.get('/itemList')
//.something here??
.map(data => this.manipulate(data))
<loading-bar [data]='listData$' [noDataMsg]='"no data"' [errorMsg]='unavailable'>
{{listData$ | async}}
</loading-bar>
Im Idealfall würde Ich mag die async pipe
halten mit und zeichne nicht in meiner Komponente. Aber wenn man das Observable an die Ladebalken-Komponente übergibt und dort einträgt, macht das 2 http calls
... dann muss ich. share()
auf dem Observable ...
Welchen Ansatz nehmen Sie zum Laden, keine Daten und Fehlermeldungen mit Ihren Streams anzeigen?
Eigentlich können Sie einige 'loading' Flag verwenden und nach innen zu wahren, bevor http und auf false gesetzt 'map' wenn Sie nicht abonnieren möchten. So kann Ihr Laden "loading" Variablenstatus – VadimB
hören Sie können 'do' Operator verwenden, ermöglicht es Ihnen, eine Operation ohne Verwendung von map, wie' this.http.get (...) hinzuzufügen. Do (loading = false). map (... => ...); ' – Supamiu