如何捕获URL参数并基于url params重定向到angular4

时间:2018-03-16 00:47:24

标签: angular angular-ui-router url-parameters

我有两个申请。 从一个应用程序我们将进入第二个应用程序。 从第一个申请

http://localhost:8080/myfirst-portal/?account_number=RDQsssyMDE=&firstname=UssssGhpbA==&lastname=RGFsssuY2U=&role=csssG9ydGFsZmllbGR1c2Vy

从第一次申请到第二次申请时,它会向第二次申请发送一些数据。

第二次申请 http://localhost:8080/myapp/#/login

基于第一个应用程序的URL prams,我们必须重定向到特定组件。

在角应用程序中的路线

{路径:'',pathMatch:'完整',redirectTo:' / login' },   {path:' **',pathMatch:' full',redirectTo:' / login' },

实现这一目标的最佳途径是什么?

2 个答案:

答案 0 :(得分:1)

订阅路线事件,然后

ngOnInit() {
    this.sub = this.route.params.subscribe(params => {
       this.id = +params['id']; // (+) converts string 'id' to a number

       // apply you condition here{
         this.router.navigateByUrl(['show_alunos']);
        }
    });
  }

如果您想阅读详细说明,可以阅读本主题 使用具有良好主题的click here

另外,配置路由文件

RouterModule.forRoot([
  { path: 'login', component: LoginComponent },
  { path: 'nomination', component: HomeComponent }
])

尝试使用NavigationEnd

previousUrl: string;
constructor(router: Router) {
  router.events
  .filter(event => event instanceof NavigationEnd)
  .subscribe(e => {
    console.log('prev:', this.previousUrl);
    this.previousUrl = e.url;
  });
}

答案 1 :(得分:0)

如果您在第二个应用程序中设置了路由,Angular Router将自行完成工作。

如果在您的第​​二个应用程序中,您的配置与此类似:

RouterModule.forRoot([
  { path: 'login', component: LoginComponent },
])

您可以使用以下链接重定向用户: http://secondapplink.com/login

然后,Angular路由器将自行查找并呈现Login组件。

当然,在部署应用程序的生产环境中,您必须设置URL重写,以免最终出现错误。在开发模式中,您不必担心这一点。