私は、角度2を使用してAPIを駆動するアプリケーションを持っています。コールへの応答が401 PLEASE_LOGIN
の場合は、ユーザーをサインアップコンポーネントにリダイレクトするangular2-角度2のビューがナビゲートした後に応答しない
問題は、サインアップコンポーネントにリダイレクトすると、正しくロードされたビューがユーザーの操作に応答しないということです。エラーはありません。たとえば、ボタンをクリックするとコンポーネントメソッドが呼び出されて動作しますが、ビューは反応しないか更新されません。
私の設定は次のとおりです。私のホームコンポーネントテンプレートには、user-sidebar.componentへの参照があります。このサイドバーコンポーネントにはngOnInitメソッドがあり、認証されたユーザーのバックエンドに問い合わせます。
ngOnInit(): void
{
this._authService
.me()
.subscribe(
(resData: Object) => { this.user = resData.data; },
(err: any) => { console.log(err); }
);
}
のAuthService .ME()メソッド
me(): any
{
return this._appService.get('/me');
}
:認証されたユーザーなしが存在しない場合、それをロードするサービスは、/サインアップ
私のユーザーsidebar.component ngOnInit法にリダイレクト私のapp.service getメソッド:
get(path: string, data: Object): Observable
{
return this._sailsService.get(path, data)
.catch(this.handleError.bind(this));
}
public handleError(err: Response): void
{
// If the server response with unhautorized, redirect to login/signup page
if(err.statusCode == 401 && err.error == 'PLEASE_LOGIN')
{
this._router.navigate(['/signup']);
}
return Observable.throw(err);
}
角度のバグや私のコードは、私の研究が与えたかどうかわからない何もない。
Observable.of(err)の代わりにObservable.of(null)を返すとどうなりますか? –
subscribe onErrorコールバックは、エラーの代わりにnullを受け取ります。しかし、私の現在の問題については、何も変わらない。 –
あなたのコードを以前は完全に理解していませんでした。問題が変更検知に関連していないことを確認するために 'private zone:NgZone'を注入し、' this.zone.run(()=> this._router.navigate(['/ signup']));起きていません。 –