Mam problem ze znalezieniem wielu przykładów/poradników dotyczących używania obserwowalnych w usłudze Angular2. Istnieje wiele rzeczy, które mogą być powiązane z szablonami html z EventEmitter, ale to nie jest dobre dla usługi.Nie można znaleźć poprawnego EventEmitter lub Observable Syntax w Angular2 Services
Jednym z głównych motywów jazdy jest ucieczka od obietnic w Angular2, ale wydaje mi się, że nowa składnia nie jest poprawna.
co robię
- Mam FirebaseAuth usługi, które mogą być wstrzykiwane do innych usług lub komponentów.
- Mam funkcji, które wykonuje połączenia asynchronicznego do Firebase, w moim przykładzie, aby utworzyć użytkownika
- chcę zwracają Obserwowalne (wymienić obietnicę) że inne usługi mogą korzystać robić inne rzeczy, takie jak utworzyć profil, gdy ten zostanie rozwiązany
jestem w porządku, jeśli obietnice są najlepszym rozwiązaniem dla tego przykładu, ale chciałbym, aby dowiedzieć się, co Obserwowalne Way jest.
Moje życzenie:
/*DS Work on firebase Auth */
import {Injectable} from 'angular2/angular2';
@Injectable()
export class FirebaseAuth {
ref = new Firebase('https://myfirebase.firebaseio.com');
//check if user is logged in
getAuth(): any {
return this.ref.getAuth();
}
//register a new user
createUser(user: any): Promise<any> {
return new Promise((resolve, reject) => {
this.ref.createUser(user, function(error, userData) {
if (error) {
reject(error);
console.log('Error creating user:", error');
} else {
resolve(userData);
console.log('Successfully created user account with uid:', userData.uid);
}
})
})
}
};
Jak bym przepisać to do korzystania Obserwowalne i/lub EventEmitter?
dobra odpowiedź na semantyki Obserwowalne vs tematu. Jeśli chodzi o konkretny firebase, zobacz także artykuł Sara Robinsona AngularConnect [dyskusja] (https://www.youtube.com/watch?v=RD0xYicNcaY) i [aplikacja demo] (https://github.com/sararob/angular2base) dla niektórych konkretnych sztuczki dla Firebase i Angular2. – robwormald
** Niezwykle pomocna !! ** Bardzo dziękuję za tego Erica, trochę się starałam, żeby to naprawić i to jest dokładnie to, czego potrzebowałem. W podanym przez Ciebie przykładzie wydaje się, że użycie Observable byłoby lepsze niż EventEmitter. Jaki byłby powód, by go użyć? Jeśli chodzi o przemówienie Sary, To wspaniała rozmowa i oglądałem ją kilka razy w rzeczywistości i uwielbiam pomysł użycia fajki. Jedynym problemem jest to, że jej przykład jest ściśle powiązany z komponentami, a moje usługi również muszą rozmawiać z Firebase. –
Odpowiedź byłaby bardziej osobistą opinią niż techniczną odpowiedzią, więc przepraszam za to. W dokumentacji [EventEmitter] (https://angular.io/docs/ts/latest/api/core/EventEmitter-class.html) jest napisane: "Wykorzystuj przez dyrektywy i komponenty do emitowania zdarzeń niestandardowych", innymi słowy celem jest wyemitowanie zdarzeń między komponentami/dyrektywami, nie jest to celem obsługi bardziej złożonych scenariuszy. Oczywiście możesz go używać tak, jak chcesz, ale myślę, że nadużywałbyś go. –