La mise en œuvre de la saisie semi-automatique
Je vais avoir du mal à trouver une bonne saisie semi-automatique de composants pour Angular2. Juste quelque chose que je peux passer d'une liste de clés-étiqueter les objets, et avoir une belle saisie semi-automatique sur un input
champ.
Kendo ne prend pas en charge Angulaire 2 pourtant, et c'est ce que nous utilisons principalement en interne. Il ne semble pas qu'Angulaire du Matériel prend en charge Angulaire 2 encore.
Quelqu'un peut-il svp me pointer dans la bonne direction ou laissez-moi savoir ce qu'ils utilisent?
C'est ce que j'ai construit jusqu'à présent. Il est assez mauvais, et je voudrais trouver quelque chose qui ressemble à nice.
import {Component, EventEmitter, Input, Output} from 'angular2/core';
import {Control} from 'angular2/common';
import {Observable} from 'rxjs/Observable';
import {SimpleKeyValue} from '../models/simple-key-value'
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
@Component({
selector: 'general-typeahead',
template: ` <div>
<div class="input-group">
<input type="text" [ngFormControl] = "term" class="form-control" placeholder={{placeHolder}} >
</div>
<ul>
<li class="item" *ngFor="#item of matchingItems" (click)="selectItem(item)">
{{item.value}}
</li>
</ul>
</div>`
})
export class GeneralTypeahead {
matchingItems: Array<SimpleKeyValue>;
term = new Control();
@Input() allItems: Array<SimpleKeyValue>;
@Input() placeHolder: string;
@Output() onSelectItem = new EventEmitter<SimpleKeyValue>();
constructor() {
this.term.valueChanges
.distinctUntilChanged()
.debounceTime(200)
.subscribe((term : string) => this.matchingItems = this.allItems.filter(sl => sl.value.toLowerCase().indexOf(term.toLowerCase()) > -1));
}
selectItem(sl: SimpleKeyValue) {
this.onSelectItem.emit(sl);
}
}
- serait-il être bien pour aller avec Jquery dans angular2?
- Je préfère pas trop à moins qu'il n'y a pas de meilleure façon
- Angulaire de Matériel ou de Kendo UI a typeahead angulaire maintenant
Vous devez vous connecter pour publier un commentaire.
Mise à jour: Cette réponse a conduit à l'élaboration de
ng2-completer
un Angular2 de saisie semi-automatique de composant.C'est la liste de saisie semi-automatique des composants pour Angular2:
De crédit va à @dan-cancro pour venir à l'idée
En gardant l'original de réponse pour ceux qui le souhaitent de créer leur propre directive:
À l'affichage de la liste de saisie semi-nous avons d'abord besoin d'un attribut de la directive qui retourne la liste de suggestions basées sur l'entrée de texte, puis de les afficher dans une liste déroulante.
La directive a 2 options pour afficher la liste:
Il me semble que le 2ème est un meilleur choix car il utilise angulaire 2 mécanismes de base au lieu de les contourner en travaillant directement avec les DOM et, par conséquent, je vais utiliser cette méthode.
C'est la directive de code:
La directive charge dynamiquement un menu composant, ceci est un exemple d'un composant à l'aide de bootstrap 4:
L'utilisation de la directive dans un autre composant dont vous avez besoin pour l'importation de la directive, de l'inclure dans les composants de directives et de lui fournir une fonction de recherche et de gestionnaire d'événement pour la sélection:
Mise à jour: code compatible avec angular2 rc.1
@Input() searchPropertyName = "text"
et oùitem.text
est utilisé utiliseritem[searchPropertyName]
PrimeNG a un natif de saisie semi-automatique de composants avec des fonctionnalités avancées comme la création de modèles et de sélection multiple.
http://www.primefaces.org/primeng/#/autocomplete
Je pense que vous pouvez utiliser
typeahead.js
. Il y a tapuscrit définitions pour elle. ainsi, il sera facile de l'utiliser, je suppose que si vous utilisez la machine pour le développement.Je sais que vous avez déjà plusieurs réponses, mais j'étais dans une situation similaire où mon équipe ne voulait pas dépendre d'une lourde bibliothèques ou quoi que ce soit lié à l'amorçage depuis que nous sommes à l'aide de matériel j'ai donc fait notre propre saisie semi-automatique de contrôle, l'utilisation de matériaux comme les styles, vous pouvez utiliser mon la saisie semi-automatique ou, au moins, vous pouvez donner un coup d'oeil pour vous donner quelques guiadance, il n'y a pas beaucoup de documentation sur des exemples simples sur la façon de télécharger vos composants pour être partagé sur NPM.
J'ai créé un module pour anuglar2 de saisie semi-automatique
Dans ce module, vous pouvez utiliser de tableau, ou une url
npm lien : ang2-saisie semi-automatique
Un construire en composant disponible pour l'auto-complétion dans angulaires-le matériel
Cliquez sur ici pour le vérifier!
Remarque: vous pouvez même personnaliser le filtre logique de cette saisie semi-automatique selon vos exigences.
J'ai construit un assez simple, réutilisable et fonctionnelle Angular2 de saisie semi-automatique basée sur des composants sur certaines des idées dans cette réponse/d'autres tutoriels sur ce sujet et d'autres. C'est pas exhaustive, mais peut être utile si vous décidez de construire votre propre.
Le composant:
Le composant CSS:
La directive:
Le point culminant de la pipe:
La mise en œuvre:
Je voudrais ajouter quelque chose que personne n'a encore parlé: ng2-saisie-saisie semi-automatique
MNP: https://www.npmjs.com/package/ng2-input-autocomplete
GitHub: https://github.com/liuy97/ng2-input-autocomplete#readme