Angular2サービスでオブザーバブルを使用するためのサンプル/ガイドの方法を見つけるのに苦労しています。 EventEmitterでバインドされたhtmlテンプレート用のものがありますが、それはサービスのために正しいとは思われません。Angular2サービスで正しいEventEmitterまたはObservable Syntaxを見つけることができません
大きな動機のテーマの1つは、Angular2の約束から離れていますが、新しい構文が正しいとは言えません。私は
- をやっている
は、私は他の サービスやコンポーネントに注入することができるFirebaseAuthサービスを持っています。他のサービスのような他の事を行うために使用することができます
私は(約束を置き換えるために)観測可能を返すようにしたいユーザー - を作成するために、私の例では、 firebaseへの非同期呼び出しを行う機能を持っている
- これは
約束はこの例のために最善の解決策ですが、私は観察可能ウェイが何であるかを把握したい場合、私は大丈夫だよ解決されたときに、プロファイルを作成します。
マイサービス:
/*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);
}
})
})
}
};
どのように私が観察および/または持つEventEmitterを使用するには、このを書き換えるでしょうか?
良い答えを実行している見ることができます。 firebaseについては、具体的にはSara RobinsonのAngularConnect [talk](https://www.youtube.com/watch?v=RD0xYicNcaY)と[demo app](https://github.com/sararob/angular2base)を参照してください。 FirebaseとAngular2のトリックです。 – robwormald
**非常に参考になっています!**このエリックは大変ありがとうございました。 この例では、Observableを使用するとEventEmitterより優れているようです。代わりにそれを使用する理由は何ですか? サラの話は素晴らしい話ですが、実際には数回それを見て、パイプを使う考えが大好きです。彼女の例がコンポーネントに密接に結びついているだけで、私のサービスもFirebaseと話をする必要があるということだけが問題です。 –
答えは技術的な答えよりも個人的な意見ですので、私はそれを謝ります。 [EventEmitterのドキュメント](https://angular.io/docs/ts/latest/api/core/EventEmitter-class.html)には、「カスタムイベントを送出するためのディレクティブとコンポーネントによる使用」という言い換えれば、コンポーネント/ディレクティブ間でイベントを発生させる目的で、より複雑なシナリオを処理するのはその目的ではありません。もちろん、あなたはそれをあなたが望むように使うことができますが、あなたがそれを悪用していると思います。 –