Manière correcte de s'abonner à valueChanges Angulaire 2
J'ai été bidouiller avec des formes réactives et valueChanges
abonnement Angulaire 2. Je ne t très bien pourquoi certaine forme de souscrire semblent ne pas être autorisé.
this.form.get('name').valueChanges /* <- doesn't work */
.do(changes => {
console.log('name has changed:', changes)
});
.subscribe();
this.form.get('title').valueChanges.subscribe( /* <- does work */
changes => console.log('title has changed:', changes)
);
Cette plunker reproduit le problème (ouvert DevTools console pour voir le message d'erreur):
ZoneAwareError {pile: "Erreur: Uncaught (promesse): TypeError: Cannot se...g.com/[email protected]/dist/zone.js:349:25) []", un message: "Uncaught (promesse): TypeError: Cannot set ina...de minerai.umd.js:8486:93)↵ au Tableau.forEach (native)", originalStack: "Erreur: Uncaught (promesse): TypeError: Cannot se...ps://unpkg.com/[email protected]/dist/zone.js:349:25)", zoneAwareStack: "Erreur: Uncaught (promesse): TypeError: Cannot se...g.com/[email protected]/dist/zone.js:349:25) []", nom: "Erreur"...}
Est le premier modèle (avec do
) n'est pas illégale en effet?
do
être illégal? Vous n'avez pas besoin, vous pouvez passer le rappel à subscribe(...)
à la place. Le Plunker ne fonctionne pas pour moi (je ne sais pas pourquoi, ont depuis un certain temps et, par conséquent, ne peut pas étudier)C'est exactement ce qui m'intrigue, c': pourquoi serait-il illégal? Le Plunkr n'est pas toujours comme moi soit - je mets à jour mon post avec l'erreur de la DevTools.
Votre Plunker avez manqué l'importation du
do
de l'opérateur. Voir aussi stackoverflow.com/questions/34515173/...Une sorte de bon point, l'ajout de
import 'rxjs/add/operator/do';
n'a pas aider à bien.Difficile à dire, je ne sais pas comment déboguer avec Plunker pas de travail. Je ne suis pas à l'aide de la Machine a ecrire sur ma machine. Peut-être quelqu'un d'autre a une idée.
OriginalL'auteur user776686 | 2017-01-16
Vous devez vous connecter pour publier un commentaire.
Ce fait votre plunker de travail:
Complète changé app.ts
Une autre solution serait d'utiliser le "ngModelChange" événement
Changement dans votre modèle:
Dans votre composant vous gérer ensuite votre événement de changement:
pourquoi voulez-vous utiliser le "faire" ? Si vous déplacez la fonctionnalité de "faire" pour s'abonner bloc, il est de travail
votre modèle est pas mal la syntaxe est la suivante.
Je seconde, vous avez un point-virgule dans le milieu de votre observables de la chaîne entre do() et abonnez-vous(). C'est un code d'erreur de syntaxe.
OriginalL'auteur Karl
un de la manière est:
debounceTime fera abonnement après avoir donné quelques millisecondes. Si besoin est,de les ignorer.
distinctUntilChanged force abonnement uniquement sur la valeur réelle de changement.
OriginalL'auteur Nabin Kumar Khatiwada
J'ai également eu des problèmes avec cela.
Je voulais faire debounceTime dans mon cas, si elle ne résout pas à mes besoins.
J'ai effectivement oublié de vous abonner!
Mais j'ai été en mesure d'obtenir les changements de la valeur d'activation de cette façon:
Origine à partir d'ici, à l'angle de docs: héros-détail-composant.ts
OriginalL'auteur JGFMK