2016-12-17 7 views
1

フォームから送信されたデータユーザーを(apiを介して)処理した後、別のコンポーネントにリダイレクトする必要があります。以下は私が試したコードです。コンポーネントでangle2のapi呼び出し後のルートにリダイレクト

onSubmit(model){ 
    if(model.valid === true) { 
    this.SharedService.postFormdata(model).subscribe(
     data => { console.log(data)}, 
     error => Observable.throw(error); 
    ); 
    this.router.navigate(['PublicPage']); 
    } 
} 

しかし、完了呼の後、ITSはPublicPageコンポーネントにリダイレクトしません。助けてください。ありがとう。

答えて

7
import { Router } from '@angular/router'; 

export class HeroesComponent { 

    constructor(private router: Router) { } 

    onSubmit(modal): void { 
    if(model.valid === true) { 
     this.SharedService.postFormdata(model).subscribe((data) => { 
     // Page redirect when getting response 
     this.router.navigate(['/PublicPage']); 
     },(error) { => 
     console.log("err", error); 
     }); 
    } 

    } 

} 

このドキュメントをお読みください。Angular2 routing

+0

たくさんあります。返事が遅れて申し訳ありません。 – rgk

3

最初にリダイレクトする場合、それは成功だならば、そのようにようにしてみてください

() => { 
     this.router.navigate(['PublicPage']); 
} 

を使用し、その後、

data => { this.router.navigate(['PublicPage']); } 

それとも、とにかく呼び出したい場合に追加dataブロックのあなたのerror外に置きますそれ:

onSubmit(model) { 
    if (model.valid === true) { 
     this.SharedService.postFormdata(model).subscribe(
      data => { 
       console.log(data); 
       this.router.navigate(['PublicPage']); // ON SUCCESS 
      }, 
      error => Observable.throw(error), 
      () => { 
        this.router.navigate(['PublicPage']); //ANYHOW WILL CALL 
       } 
     ); 
    } 
} 

これが役に立ちます。よりよく理解するために

+0

ヘクタール、そのタイプミス、エラーがデータブロックの外側にあります。今は試しています。 – rgk

+0

@rgkそれは機能しましたか? –

関連する問題