Angular2 contrôle de formulaire valueChanges observables complète ne s'est jamais appelé
Je suis en train d'essayer de montrer un simple loader sur ma barre de recherche, tandis que la recherche se déroule. J'ai prévu de mettre une variable dans le abonnez-vous de rappel sur le valueChanges
observables à partir de mon formulaire de contrôle à une valeur "chargement", et de la mettre à une chaîne vide dans le rappel. Cependant, l'ensemble de la callback n'est appelé.
J'ai aussi essayé d'ajouter un rappel pour enfin sur les observables, mais il n'est jamais appelé.
Mon code:
searchBox: Control = new Control();
loadingClass: string = "";
constructor() {
this.searchBox.valueChanges
.debounceTime(400)
.distinctUntilChanged()
.subscribe((text: string) => {
this.imageSearch = text;
this.loadingClass = "loading";
}, (err: Error) => {
console.log(err);
}, () => {
this.loadingClass = "";
console.log("test");
});
}
OriginalL'auteur Matsura | 2016-05-30
Vous devez vous connecter pour publier un commentaire.
C'est normal puisque l'observable n'est jamais terminé. Le
valueChanges
vous permet de recevoir la valeur de votre zone de recherche. En fait, vous souhaitez être averti lorsque la recherche est terminée.Donc je voudrais essayer quelque chose comme ça, en supposant que le
searchImage
ne fait de la recherche et revenir à une observable:Consultez cet article pour l'utilisation de la
flatMap
opérateur:Avez-vous une idée de comment avoir des modifications uniquement lors de la validation ou vérification de validation dans valueChanges?
OriginalL'auteur Thierry Templier
J'ai compris que je suis en train de la mauvaise approche. Au lieu de cela, j'ai réalisé que j'avais
debounceTime
sur mon observable, donc je me suis inscrit unkeyup
évènement sur mon contrôle d'entrée, et dans l'ensemble de la valeur deloadingClass
à"loading"
, et dans mon abonnez-vous j'ai défini la valeur de retour est une chaîne vide.OriginalL'auteur Matsura
J'espère que cela pourrait conduire certaines personnes d'obtenir une meilleure compréhension de Angular2 Formes. Angulaire a deux approches différentes formes de bâtiments (Réactif et le Modèle de formulaire). Ne pas être conscient de ce qui pourrait vous conduire à désordre apps.
valuesChages est une propriété de la directive NgModel, et la classe FormControl (gardez le à l'esprit que).
De cette façon, vous pouvez utiliser le
[(formControl)]
de propriété sur vos contrôles de formulaire (template.component.html).Cette approche a son propre formulaire de propriétés d'un contrôle, ngModel (votre.de modèle.ts):
OriginalL'auteur Luillyfe