Как создавать новые экземпляры компонентов при использовании общей / динамической маршрутизации Angular 6 - PullRequest
0 голосов
/ 16 ноября 2018

У меня есть настройка маршрута 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?

...