Добавьте подстановочный знак в конец URL после определенного слова - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть URL-адрес, который выглядит следующим образом:

https://localhost:8080/user/login

Однако есть возможность вручную добавить параметры запроса, чтобы URL-адрес мог выглядеть следующим образом.

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

Поэтому мне нужен подстановочный знак, с которым все берется после слова «логин».

Мои URL-адреса определены внутри константного объекта, например:

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

.. и используются какэто:

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

Ответы [ 2 ]

2 голосов
/ 04 апреля 2019

Навигация к вашему URL с Router.navigate в вашем компоненте

import { Router } from "@angular/router"

constructor(private router : Router){} 

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

Вы можете использовать ActivatedRoute в компоненте входа в систему для извлечения параметров запроса URL

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

constructor(private route: ActivatedRoute) { }

ngOnInit(){
   this.route.queryParams.subscribe(params=> { console.log(params); });
}
0 голосов
/ 04 апреля 2019

Не знаю, смогу ли я разобраться с вашей проблемой?

Регулярное выражение для извлечения всего после слова '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];
    }
  }

Для маршрутизации с параметрами запроса в угловых значениях вы можете использовать NavigationExtras со свойством queryParams:

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

И с помощью роутера ссылка

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