Angulaire 2 filtre/de la liste de recherche
Je suis à la recherche de l'angle de 2 façon de le faire cette.
J'ai simplement une liste d'éléments, et je tiens à faire une entrée dont le boulot est de filtrer la liste.
<md-input placeholder="Item name..." [(ngModel)]="name"></md-input>
<div *ngFor="let item of items">
{{item.name}}
</div>
Quel est le véritable moyen de faire cela dans Angulaire 2? Ne qui nécessite un tuyau?
- vous pouvez créer des tuyaux pour ce qui sera mieux
- Pouvez-vous donner un exemple?
- Vous pouvez utiliser ceci, jetez un coup d'œil à 'HeroSearchComponent titre, ou ceci comme un point de référence.
- C'est l'exemple parfait, mais dans mon cas je ne suis pas en utilisant HTTP, j'ai juste besoin de filtre dans le client après la liste des articles ont reçu sans réponses
Vous devez vous connecter pour publier un commentaire.
Vous avez manuellement le filtre de résultat basé sur le changement de l'entrée à chaque fois par le maintien de l'auditeur sur
input
événement. Tout en faisant manuellement filtrage assurez-vous de vous tenir à deux copie de variable, on serait original de la collection de copie & deuxième seraitfilteredCollection
copie. L'avantage pour aller de cette façon pourrait sauver votre couple de la inutile de filtrage sur la détection de changement de cycle. Vous pouvez voir plus de code, mais ce serait plus de performance amical.Balisage HTML Modèle
Code
item.name...
à!item.name
et il est maintenant à la recherche. le seul problème est que si je tape par exemple: "BOX" quand il y a un élément nommé "BOÎTE NOIRE", il ne sera pas le montrer, parce que la "BOÎTE" est le deuxième mot (il n'y a pas de recherche de tous les mots, seulement à partir de la première). Vous avez une idée de ce qui concerne ce?item.property
et seul filtre sur une propriété que vous pouvez faire:JSON.stringify(item)
et d'utiliser toutes les propriétés en elle.De recherche en fonction de plusieurs champs
En Supposant Des Données:
Balisage:
Pipe:
Une ligne pour tout!
[(ngModel)]="query"
dans un bouton radio? Quelque chose comme cela?<input [(ngModel)]="query" type="radio" name="topic.term" [value]="topic.term"/>{{topic.term}}
<div *ngFor="let item of items"> <input type="radio" name="{{item.text}}" [checked]="query == item.text" (change)="query = item.text" [value]="item.text"/>{{item.text}} </div>
TypeError: (value || []).filter is not a function
. Savez-vous quel peut être le problème?HTML
Composant
Noter que cette.itemsCopy est égal à cette.les éléments et doivent être réglés avant de faire de la recherche.
Angulaire 2 nous n'avons pas de pré-filtre défini et par ordre, comme c'était avec AngularJs, nous avons besoin de créer pour nos besoins. Il est temps de les tuer, mais nous avons besoin de le faire, (voir N FilterPipe ou OrderByPipe). Dans cet article nous allons voir comment nous pouvons créer un filtre appelé pipe angulaire 2 et de la fonctionnalité de tri appelé Commande Par. Nous allons utiliser un simple mannequin de données json tableau pour cela. Voici le json nous allons utiliser pour notre exemple
Nous verrons tout d'abord comment utiliser le tuyau (à filtre) à l'aide de la fonction recherche:
Créer un composant avec le nom de la catégorie.composante.ts
JS:
HTML:
2.Rien de spécial dans ce code initialiser nos dossiers variable avec une liste de catégories, deux autres variables isDesc et de la colonne sont déclarées que nous allons utiliser pour le tri-ci. À la fin ajouté cette.type(ceci.colonne); dernier nous allons utiliser, une fois que nous aurons cette méthode.
Note templateUrl: './category.component.html", ce qui nous permettra de créer en regard de afficher les enregistrements dans tabluar format.
Pour cela créer une page HTML appelée category.component.html avec code suivant:
3.Ici, nous utilisons ngFor à répéter les enregistrements et afficher ligne par ligne, essayez de le lancer et nous pouvons voir tous les enregistrements dans une table.
De Recherche - Filtrer Les Enregistrements
Dire que nous voulons à la recherche de la table par le nom de la catégorie, pour cela nous allons ajouter une zone de texte du type et de la recherche
HTML:
5.Maintenant nous avons besoin de créer un canal de recherche, le résultat par catégorie, parce que le filtre n'est pas disponible car il a été dans angularjs plus.
Créer une catégorie de fichiers.la pipe.ts et ajouter le code suivant dans il.
JS:
6.Ici, dans la méthode de transformation, nous sommes d'accepter la liste des catégories et de recherche de texte à la recherche/filtre d'enregistrement sur la liste. Importez ce fichier dans notre catégorie.composante.fichier ts, nous voulons l'utiliser ici, comme suit:
JS:
7.Notre ngFor boucle maintenant besoin de nos Tuyaux pour filtrer les enregistrements, afin de le changer à cela.Vous pouvez voir le résultat dans l'image ci-dessous
entrez la description de l'image ici
<tr *ngFor="let item of records | search : searchText">
pls ajouter ceci à l'intérieur .fichier html. Pouvez-vous fournir une autre solution pour plusieurs niveaux de filtrage?données
Vous pouvez atteindre cet objectif par la création d'une simple pipe
Pipe
Cela va filtrer le résultat basé sur le terme de recherche
Plus D'Infos
Vous pouvez également créer un recherche pipe pour filtrer les résultats:
Utilisation de tuyaux en HTML :
Pipes Angulaire 2+ sont un excellent moyen de transformer et de format de données directement à partir de vos modèles.
Tuyaux de nous permettre de modifier les données à l'intérieur d'un modèle; c'est à dire le filtrage, la commande, le formatage des dates, des nombres, des devises, etc. Un bref exemple vous pouvez transférer une chaîne de caractères en minuscules, en appliquant un filtre simple dans le code du modèle.
Liste de Tuyaux de Liste des API Exemples
Exemple Angulaire version 4.4.7.
ng version
Personnalisé Tuyaux qui accepte plusieurs arguments.
De filtrage du contenu à l'aide d'une Pipe «
json-filter-by.pipe.ts
Ajouter à
@NgModule
« AjouterJsonFilterByPipe
à votre liste de déclarations dans votre module; si vous oubliez de le faire, vous recevrez un message d'erreur pas de fournisseur pourjsonFilterBy
. Si vous ajoutez le module puis il est disponible pour tous les composants de ce module.Nom de fichier:
users.component.ts
etStudentDetailsService
est créé à partir de ce lien.Nom De Fichier:
users.component.html
Légère modification à @Mosche réponse, pour la manipulation si il n'existe pas d'élément de filtre.
TS:
HTML:
Ce code presque fonctionné pour moi...mais je voulais un multiple de l'élément de filtre de sorte que mes mods pour le filtre de tuyau sont ci-dessous:
Maintenant, au lieu de
vous pouvez faire