在特定字词后的URL末尾添加通配符

时间:2019-04-04 09:15:13

标签: regex angular url url-routing wildcard

我有一个看起来像这样的URL:

https://localhost:8080/user/login

但是,可以手动附加查询参数,以使URL看起来像这样。

https://localhost:8080/user/login?ten=123456

所以我需要一个通配符,在“登录”一词之后使用该通配符。

我的URL在这样的常量对象中定义:

export const Constants = {
    routing: {
      home: '/',
      userLogin: '/user/login',
}

.. and的用法如下:

const routing = Constants.routing;
const url = this.routing.userLogin

2 个答案:

答案 0 :(得分:2)

使用组件中的Router.navigate导航到您的网址

import { Router } from "@angular/router"

constructor(private router : Router){} 

navigateToUserLogin(){
     this.router.navigate([url], { queryParams: { ten: 123456 } });
}

您可以在用户登录组件中使用ActivatedRoute来提取网址的查询参数

import { ActivatedRoute } from '@angular/router';

constructor(private route: ActivatedRoute) { }

ngOnInit(){
   this.route.queryParams.subscribe(params=> { console.log(params); });
}

答案 1 :(得分:0)

我现在不明白你的问题吗?

在“ login”一词之后提取所有内容的正则表达式为:

(?<=login).*$

如何在组件中应用

  public ngOnInit(): void {
    let regex = new RegExp("(?<=login).*$");
    const matches = regex.exec(window.location.href);
    if(matches.length>0){
      this.href=matches[0];
    }
  }

要使用带有角的queryparams进行路由,可以将NavigationExtras与queryParams属性一起使用:

router.navigate(["user", "login"], { queryParams: { ten: "123456" } });

并使用路由器链接

<a [routerLink]="["user", "login"]" [queryParams]="{ ten: '123456' }">Login</a>