Угловой 7: возможно ли расширить маршруты компонента в дочернем компоненте? - PullRequest
2 голосов
/ 31 марта 2019

Я хотел бы создать компонент, похожий на кнопку, которая при нажатии перенаправляет на его собственный маршрут.

Мой компонентный модуль:

@NgModule({
  imports: [
    CommonModule,
    RouterModule.forChild([
      {
        path: '',
        children: [
          {
            path: 'child',
            component: MyChildComponent
          }
        ],
      }
    ])
  ],
  providers: [...],
  declarations: [MyComponent, MyChildComponent],
  exports: [MyComponent, RouterModule]
})
export class MyComponentModule { }
...

Мой компонентный контроллер:

export class MyComponent {

  constructor(
    private router: Router,
    private route: ActivatedRoute) { }

  onClick() {
    this.router.navigate(['child'], { relativeTo: this.route })
  }
}

Теперь, если я использую MyComponent для другого компонента, при щелчке выдается ошибка:

Error: Cannot match any routes. URL Segment: 'parentPath.../child'

Я уже пробовал это на маршрутах MyComponent:

const routes: Routes = [
  {
    path: 'child',
    component: MyComponent
  }
]

Это работает, но я не могу снова запустить MyChildComponent (null возвращается из функции навигации), и функция навигации не соответствует маршруту 'child', если я использую компонент в своем корневом приложении.

Итак, возможно ли расширить отображение маршрутов компонента на дочернем компоненте?

...