Ionic 2 Webアプリケーションでログインを設定しようとしていますが、私はobservablesを使用しています。rxJsとAngular 2の2つの異なるコンポーネントで同じストリームにsubscribe()を実行
私はユーザーをログするためにリモートデータベースに接続するloginメソッドを持つauthモジュールを持っています。ログインに成功すると、私はのlocalStorage
にトークン(auth0)を格納したいので、これは私のauth.service.tsので
login(user: any) {
this.http
.get(SERVER_URL, { user_data }, options)
.map((response: Response) => response.json())
.subscribe(
data => this.authSuccess(data.jwt),
err => this.handleError(err));
}
で、これは自分自身で正常に動作していますさ。今、私はログイン画面を使用したいので、ユーザーがデータを送信すると、ログインが成功すると、アプリケーションはメイン画面にナビゲートし、そうでなければエラーメッセージを表示します。
ログインコンポーネントだからこの
loginUser(event) {
return this.authService
.login(event.user)
.subscribe(
data => navigate_to_main,
err => display_error_and_stay_in_login);
}
のようなものを持っている必要があり、私は、ログインが成功した場合にトークンを格納したいので、私はサービス内でのログイン方法に加入する必要がありますが、私はまた、必要LoginComponent内のloginUserメソッドを購読して、ログインが成功した場合にのみナビゲートします。
これはどのように行われますか?たぶん私はこれを適切なやり方ではないでしょう。
誰でも手助けできますか? ありがとう!
データを消費するには購読する必要があることに注意してください。実際に、私は最近、誰かがそれを購読するまで、HTTP要求が実行されないことに気付きました。 – Luftzig
@ Luftzig。はい。これは、HTTPリクエストを含むものだけでなく、観測可能なものにも当てはまります。オブザーバブルは関数に似ています。それらは呼び出されない限り実行されず、オブザーバブルの場合には「サブスクライブ」されます。 – AngularChef