Comment vérifier la longueur d'une Observable tableau
Dans mon Angulaire 2 composante j'ai une Observable tableau
list$: Observable<any[]>;
Dans mon Template j'ai
<div *ngIf="list$.length==0">No records found.</div>
<div *ngIf="list$.length>0">
<ul>
<li *ngFor="let item of list$ | async">item.name</li>
</ul>
</div>
Mais liste$.la longueur de ce qui ne fonctionne pas dans le cas d'Observables tableau.
Mise à jour:
Il semble que (liste$ | async)?.longueur nous donne la longueur, mais le code ci-dessous ne fonctionne toujours pas:
<div>
Length: {{(list$ | async)?.length}}
<div *ngIf="(list$ | async)?.length>0">
<ul>
<li *ngFor="let item of (list$ | async)">
{{item.firstName}}
</li>
</ul>
</div>
</div>
Quelqu'un peut s'il vous plaît guide comment puis-je vérifier la longueur des Observables tableau.
- Rapporté à github.com/angular/angular/issues/9641
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
| async
pipe:Mise À Jour - Angulaire De La Version 6:
Si vous chargez un Squelette css vous pouvez utiliser cette. Si le tableau n'a pas d'éléments, il affiche le modèle css. S'il existe des données puis de remplir le
ngFor
.<div *ngIf="(list$ | async)?.length==0">No records found.</div>
(ajouté?
)?
est nécessaire carlist$
est seulement après Angular2 essaie de rendre la vue la première fois.?
empêche le reste de la sous-expression à évaluer jusqu'à ce que la partie gauche de?
devient!= null
(Elvis ou la sécurité de la navigation de l'opérateur).as
mot-clé:<ion-list *ngIf="!query && (uniqueTodayCollected | async) as today">
. Vérifiez la longueur afin d'ions liste est masqué si uniqueTodayCollected.longueur == 0Une solution pour .ts-Fichiers:
Angulaire 4+, essayez cette
Alors que cette réponse est correcte
Garder à l'esprit que si vous utilisez un client http pour appeler backend (dans la plupart des cas, vous n') vous permettra d'obtenir un double des appels à votre API si vous avez plus qu'un liste$ | async. C'est parce que chaque | async pipe permettra de créer de nouveaux abonnés à votre liste$ observables.
C'est ce qui a fonctionné pour moi -
Je reçois mes données à partir de httpClient asynchrone.
Toutes les autres options ne fonctionne pas pour moi qui a été décevant.
En particulier, le sexy (liste$ | async) pipe.
Basa..
Votre approche ici a un autre problème majeur: en tirant parti de la async tuyau de cours et plus dans votre modèle, vous êtes réellement le coup d'envoi que de nombreux abonnements à la seule Observable.
KAMRUL HASAN SHAHED a le droit de l'approche ci-dessus: l'Utilisation de la async pipe une fois et ensuite fournir un alias pour le résultat que vous pouvez exploiter dans les nœuds enfants.