У меня есть настройка маршрута Angular 6, которая выглядит следующим образом:
const routes: Routes = [ {
matcher: PageMatcher,
component: PageComponent,
resolve: {
path: PageResolver
}
},...
@Injectable()
export class PageResolver implements Resolve<string> {
constructor() {}
resolve(route: ActivatedRouteSnapshot) {
const path = '/' + route.url.join('/').replace(/\.[^/.]+$/, '');
return path;
}
}
export function PageMatcher ( url: UrlSegment[] ): UrlMatchResult {
const path = url.join('/');
if (path.startsWith('foo/')) {
return ({
consumed: url,
posParams: { path: url[url.length - 1]}
});
}
}
Узел маршрута может совпадать с любым путем в / foo, и направляет к PageComponent с помощью data['path'] = foo/the/path/to/the/page
, который используется для последующего использования.обработка.
Моя проблема в том, что, по-видимому, поскольку это один узел маршрута, один и тот же экземпляр компонента страницы используется всеми пользователями этого узла маршрута;поэтому foo / bar.html и foo / cat.html оба будут использовать один и тот же экземпляр PageComponent.
К сожалению, PageComponent расширяет сторонний компонент, и для этого каждый PageComponent в каждом пути должен быть уникальным объектом.Любая идея, как я могу сказать маршрутизатору Angular создать новый объект для каждого нового пути / URL, который соответствует этому единственному узлу Router?