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?