Hej, kombinowałem z routingiem w Anguar, ponieważ do URL chciałęm dodać token który zwiera /. Żeby routing w aplikacji Angulara nie zgubił się, próbuję wykorzystać UrlMatcher. Wszystko wydaje się być spoko, tylko nie wiem jak teraz skonsumować parametry w komponencie.

Router:

const customMatcher: UrlMatcher = (segments: UrlSegment[]): UrlMatchResult => {
  const { length } = segments;
  console.log('segments qty: ' + length);
  for (var i = 2; i < length; i++) {
    console.log(segments[i].path);
  }
  if (segments.length > 0) {
    const firstSegment = segments[0];
    if (firstSegment.path === "pass-reset") {
      const slicedSegments = segments.slice(2);
      const idPaths = slicedSegments.map(segment => segment.path);
      const mergedToken = idPaths.join('/');// merge the splitted Id back together
      const tokenSegment: UrlSegment = new UrlSegment(mergedToken, { token: mergedToken });
      return ({ consumed: segments, posParams: { email: segments[1], token: tokenSegment } });
    }
  }
  return null;
};

const routes: Routes = [
  { matcher: customMatcher, component: PassResetComponent }
];

@NgModule({
  imports: [RouterModule.forRoot(routes)],
  exports: [RouterModule]
})
export class AppRoutingModule { }

Komponent:

(...)
email: Observable<string>;
token: Observable<string>;
(...)
getPassResetModel(): PassResetModel {
    this.email = this.route.paramMap.pipe(map(params => params.get('email')));
    this.token = this.route.paramMap.pipe(map(params => params.get('token')));
    console.log('email: ' + this.email);
    console.log('token: ' + this.token);

    var model = <PassResetModel>{};
    model.Email = this.email;
    model.Password = '';
    model.Token = this.token;

    return model;
(...)

W komponencie niestety jest problem. Przy debugowaniu (w konsoli) otrzymuję:

email: [object Object]
token: [object Object]

Nie wiem jak przekonwertować wynik. Może będziecie mieli jakieś pomysły co zrobić w komponencie?