0
votes

Ngfor itérateur sur observable

J'ai la carte suivante dans un service: xxx pré>

sloTitem est une classe. Je donne la slotlist du service avec: p> xxx pré>

Deux choses ne sont pas claires: p>

  1. Comment puis-je m'abonner aux slotatems p>

    this.sloitems = ceci.fservice.getsloitems (); p>

    this.sloTems.subscribe (val => console.log (val)); p> li>

  2. Comment puis-je itération avec ngfor sur les éléments p>

    p> li> ol>

    j'ai essayé p> xxx pré>

    mais je reçois l'erro que les slotatems ne sont pas assignables à Ngiterable. P>

    changements de la ci-dessous aide: strud> p>

    si je change p> xxx pré>

    i obtenir une erreur dans le HTML si j'écris p> xxx PRE>

    Les champs "actifs" et "icône" sont membres de la classe SloTem. P>

          <div *ngIf="!item?.value?.active" style="color:darkgray">
            <{{item.value.title}}>
          </div>
    


0 commentaires

3 Réponses :


0
votes

au lieu de: xxx

Utilisez: xxx

async tuyau s'abonne et se désabonne à votre observable au besoin, et renvoie la dernière valeur de l'observable à chaque fois qu'un nouveau est émis. < / p>

Cela signifie également que vous n'avez pas besoin de vous abonner à l'observable vous-même.


6 commentaires

Merci, mais comment puis-je accéder à l'élément de la classe: "item.value.id" ne fonctionne pas.


Pourriez-vous mettre à jour votre question montrant où vous essayez d'accéder à item.value.id ?


Je l'ai fait. Je suis un peu plus confus maintenant. Les autres réponses ci-dessus ont déclaré que je devrais utiliser S'abonner.


Donc, est compris entre et ? Si oui, peut-être que votre article n'a pas de champ ? Si tel est le cas, vous pouvez utiliser l'opérateur de traversée sans danger ?. comme ceci: élément? .Value? .Active


Question étendue. Je reçois toujours TypeError.


Mis à jour, vous avez besoin keyvalue car votre élément est une entrée de carte



-1
votes

1.pour abonnez-vous à un processus observable comme ci-dessous xxx

data.values ​​() renvoie toutes les valeurs de la carte comme itératetable

  1. Après avoir ajouté ci-dessus * ngfor fonctionnera bien si sa ne fonctionne pas, ajoutez un tuyau d'asynchrone comme ci-dessous

    * ngfor = "Laissez l'élément de SloTitems | ASYNC"

    puis utilisez l'élément.Id et l'élément.active directement

    qui informera SloTems ira de le service ou il sera chargé de manière dynamique


0 commentaires

0
votes

J'ai changé de comportement et de cache. Ça marche bien maintenant

dans le service que j'écris xxx

dans le composant xxx

et maintenant dans le HTML J'accède aux éléments avec xxx

et l'accès membre est direct à cause de l'async xxx


0 commentaires