Incapable de rattraper les événements de EventEmitter dans Angular2?
J'ai écrit une base angulaire de l'application qui utilise la EventEmitter classe, cependant je n'arrive pas à l'écoute de composants pour attraper l'événement.
Voici mon code (à l'aide de l'alpha.27 sur Angular2 /Tapuscrit de 1,5 compilation pour ES5)
Des excuses pour le verbose exemple.
Tous les conseils sur ce que je suis en tort de faire ce que serait grandement apprécié.
import {Component, View, EventEmitter} from 'angular2/angular2';
@Component({
selector: 'login',
events : ['loggedIn']
})
@View({
template: '<button type="button" (click)="submitForm()">Click Me</button>'
})
export class Login {
loggedIn = new EventEmitter();
constructor() {
}
submitForm() {
console.log("event fired");
this.loggedIn.next({});
}
}
@Component({
selector: 'app'
})
@View({
template: "<div>This is the application</div>"
})
export class App {
constructor() {
}
}
@Component({
selector: 'root'
})
@View({
template: '<app [hidden]=!showApp></app><login (loggedIn)="loggedIn()" [hidden]=showApp></login>',
directives: [ App, Login ]
})
export class Root {
showApp:boolean;
constructor() {
this.showApp = false;
}
loggedIn() {
console.log("event caught");
this.showApp = true;
}
}
essayez
Merci pour votre réponse. J'ai essayé: (^loggedIn)="loggedIn ()", mais cela n'a pas résolu le problème.
pourrait-on supprimer cette question? c'est assez déroutant, parce que ng2 a été mis à jour et maintenant ni question ni réponse n'est pas à jour
(^loggedIn)
Merci pour votre réponse. J'ai essayé: (^loggedIn)="loggedIn ()", mais cela n'a pas résolu le problème.
pourrait-on supprimer cette question? c'est assez déroutant, parce que ng2 a été mis à jour et maintenant ni question ni réponse n'est pas à jour
OriginalL'auteur DaylightProgrammer | 2015-06-24
Vous devez vous connecter pour publier un commentaire.
Ici est un travail Plunker de votre application.
Je pense qu'il y a eu quelques problèmes.
(update)
dans le modèle est un type d'événement, de sorte qu'il ne peut pas être appeléloggedIn
. Je l'ai trouvé plus facile que d'appeler l'événementupdate
tout à fait.OriginalL'auteur shmck
Juste eu du mal avec cette question de moi-même.
La raison pour laquelle il n'a pas de travail est due au cas de le nom de l'événement. Si cela a été nommée loggedin plutôt que loggedIn il aurait été bien.
OriginalL'auteur Simon
Dans le modèle de la classe Racine, vous devez passer $événement dans le loggedIn appel:
L' $event variable représente l'objet que vous passez à la méthode suivante de votre loggedIn émetteur dans la classe de Connexion. Bien sûr, votre loggedIn méthode de la Racine de votre classe doit également accepter un objet comme argument.
En fait, cela n'a aucun effet. Le problème est lié à la
(event)
sur le côté gauche étant appelé(loggedIn)
, lorsque le type d'événement est(update)
.OriginalL'auteur Krustie101
Dans mon cas, j'ai oublié de décorer le membre de la classe avec
@Output()
, par exempleOriginalL'auteur Thorsten Westheider
Avez-vous vu ce exemple? Viktor Savkin utilise presque tout la même chose que vous, mais sans un objet vide dans cette ligne:
Sur le AngularU, Misko a montré un exemple avec EventEmitter: https://angularu.com/VideoSession/2015sf/angular-2-roadmap-update
départ à 41:00
Cela n'a pas d'effet, vous pouvez passer d'un objet ou d'appeler tout simplement la Manifestation de l'Émetteur.
OriginalL'auteur kakaja