2016-09-22 1 views
0

Je suis un cours Angular2 ayant un arrière-plan de framework Sencha ExtJS.Gestion des données volumineuses en Angular2

Ma question est assez simple: avec AngularJS, comment stockez-vous et interagissez-vous avec les grandes structures de données? Dans tout le cours quand un service récupérait des données était toujours petit et a été stocké dans un tableau.

Pourquoi ai-je mentionné ExtJS? Parce qu'il offre des classes appelées Store pour, comme son nom l'indique, stocker des données et les interroger, avec possibilité de filtrage, de tri, de cartographie, etc.

Faisons un exemple:

J'ai la liste des aéroports dans le monde et je veux l'offrir dans une sélection. Bien sûr, je vais configurer le service injecté à la sélection qui offre la liste entière. Mais alors:

-Je veux filtrer que l'utilisateur va taper sur

-Le tableau contenant les données est un tableau d'objets avec d'autres propriétés du nom comme le pays ou l'ID

Quelle est l'approche à suivre?

+0

hi, qu'est-ce qui vous empêche de stocker les données (c'est-à-dire la liste des aéroports) dans le composant intelligent au-dessus de votre application? C'est le design le plus commun que j'ai vu jusqu'ici. – pietro909

+0

Si le problème est lié à des méthodes de requête pour une liste d'objets complexes, vous pouvez utiliser l'une des bibliothèques les plus connues (Lodash propose _map_, _filter_, _fold_, ...) ou RxJS pour fonctionner de manière asynchrone. – pietro909

+0

C'est exactement ce que je cherchais. Comme nouveau à Angular j'avais juste besoin de comprendre la gestion.Il n'y a rien de intégré et vous devez déléguer à des bibliothèques externes. Comme je le disais, ExtJS a été livré avec toutes ces directions déjà incluses. Que voulez-vous dire par composant intelligent? l'application.component? Cependant merci beaucoup! –

Répondre

1

Selon mes commentaires, voici ma réponse.

Dans angulaire 2, nous avons composants intelligents, qui héberge la logique et les données, et composants muets qui sont des vues pures, sans logique et de préférence sans état.

Idéalement, vous pouvez extraire vos données de l'API et les envoyer à vos composants intelligents, soit en retournant toutes les données, soit en exposant un flux avec RxJS.

Un exemple en utilisant RxJS serait:

  • Un service appelant les API et retourner un Observable avec les données
  • un composant intelligent consommant des données du service, sous la forme d'un Subscription
  • One ou composant plus muet pour montrer les données qui sont poussées vers le bas par le composant intelligent (agissant comme un conteneur)

A ce stade, votre manipulation de données peut résider soit dans le service, soit dans le composant intelligent (cela dépend de ce que vous devez transformer et comment). Pour manipuler les données, je suggère que vous utilisiez RxJS qui offre la possibilité de chaîner les flux et les méthodes filter, aggregate, map, .... C'est asynchrone. Si vous pouvez opter pour quelque chose de moins complexe mais qui bloque (cela dépend de vos besoins), je vous suggère d'utiliser Lodash, qui fournit des méthodes pour que les collections enchaînent, mappent, filtrent et regroupent les données.