Я использую Identity Server со своим приложением Angular, и у меня есть компонент, на который я перенаправляю после входа. Там я проверяю в локальном хранилище любой сохраненный маршрут, затем перехожу к этому маршруту.
Проблема возникает, когда у меня есть параметры запроса в моем URL.Я реализовал некоторую логику для получения параметров URL из строки URL и попытался добавить их в маршрут, но я получаю сообщение об ошибке
Uncaught (in promise): Error: Cannot match any routes
И вот такой маршрут я получаю:
URL Segment: 'home/terminal-transactions%3FtoDate%3DWed%2520Feb%252020%25202019&fromDate%3D2017-01-01&startIndex%3D0&pageSize%3D20'
Это мой угловой код, чтобы получить URL перенаправления из localalstorage и затем перейти к нему.
const redirectUrl = localStorage.getItem('redirect_url');
localStorage.removeItem('redirect_url');
if (redirectUrl) {
let urlArr: string[];
const params: {} = {};
if (redirectUrl.indexOf('?') > -1) { // check for query params
urlArr = redirectUrl.split('?'); // split url on ?
let paramsString: any = urlArr[urlArr.length - 1]; // get the string after the ?
paramsString = paramsString.split('&'); // split again with & to get all the parameters
paramsString.forEach(element => { // Loop to get the key and value of params
const elemArr = element.split('='); // split with =
params[elemArr[0]] = elemArr[elemArr.length - 1]; // assign to params object the key and value
});
this.router.navigateByUrl(redirectUrl , {queryParams : params});
}
this.router.navigate([redirectUrl]);
} else {
this.router.navigate(['/home/dashboard']);
}