Angulaire de l'Événement du 2 émetteurs vs Sujet
Angulaire 2 quelle est la différence entre le Cas de l'Émetteur et sous réserve pour annoncer un événement? Il semble que l'événement émetteurs sont moins compliquées à déclarer....Ce qui est préféré par Angulaire 2?
dataRefreshEvent = new EventEmitter();
private companyDataAnnouncedSource = new Subject();
companyDataAnnouncedSource$ = this.companyDataAnnouncedSource.asObservable();
- Après l'apprentissage Rxjs maintenant je me rends compte que beaucoup plus peut être fait avec EventEmitters.
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas beaucoup de différence.
EventEmitter
s'étendSubject
.La Angular2 équipe a souligné le fait que, que
EventEmitter
ne doit pas être utilisé pour autre chose alors@Output()
s dans les composants et les directives.L'Angulaire de l'équipe a déclaré qu'ils peuvent changer l'implémentation sous-jacente de
EventEmitter
et de briser le code de l'utilisateur qui utiliseEventEmitter
pour quelque chose, il n'était pas prévu pour. C'est la principale différence.EventEmitter
est juste une abstraction très simple qui permet à l'Angulaire de l'équipe, afin de remplacerSubject
par la coutume, la mise en œuvre sans casser tout le code existant, mais actuellement il ne semble pas que ce sera nécessaire à tous même si.EventEmitter
est unSubject
est un détail d'implémentation, vous ne devriez pas besoin de s'en soucier. Vous ne devriez pas l'utiliser pour autre chose alors@Output()
et de ses propriétés Soumises ne compte pas. Au début de l'Angulaire de l'époque il y avait des plans pour finalement le remplacer par coutume, la mise en œuvre - pas sûr que ce plans existent encore. Il est donc compréhensible que les documents ne vont pas dans les détails ici. C'est plutôt quelque chose de l'RxJS docs devraient couvrir.Aussi
EventEmitter
obtient nettoyé automatiquement contrairement à la coutumeSubjects
que vous avez besoin pour vous désabonner à laonDestroy
cycle de vie du crochet.EventEmitter par défaut est synchrone, alors que le Sujet ne l'est pas.
Vous pouvez passer d'un drapeau à EventEmitter pour le rendre asynchrone.