2016-12-17 5 views
1

Мне нужно перенаправить пользователя на другой компонент после обработки (через api) пользователя данных, отправленного через форму. Ниже приведен код, который я пробовал.перенаправление на маршрут после вызова api в angular2

В компоненте

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

Однако после завершения вызова, его не перенаправление 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

Сначала положить error за пределами data блока затем Если вы хотите перенаправить, если это успех, то добавьте в

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

Или, если вы хотите позвонить, так или иначе, а затем использовать

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

Так что попробуйте, как что:

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 это сработало? –