Приведенное выше решение определенно будет работать, но в идеале вы должны использовать маршрутизатор Angular. Вот чего, я думаю, вы пытаетесь достичь здесь.
Вот изменения, которые вам необходимо реализовать:
someRootComponent.html
<app-new-post></app-new-post>
<app-filter-forum></app-filter-forum>
<router-outlet></router-outlet>
На этом этапе вы можете избавиться от ComponentA и componentB , Ваши маршруты будут выглядеть так:
const routes: Routes = [
{ path: 'view-topic', component: ViewTopicComponent },
{ path: 'sub-topic', component: SubTopicComponent },
{ path: '**', component: PageNotFoundComponent }, // Wildcard route for a 404 page
];
Возможная проблема, с которой вы столкнетесь, - управление состоянием. Есть много подходов к решению этого. Если вы хотите поддерживать глубокую связь, то я предлагаю сделать следующее:
const routes: Routes = [
{ path: 'view-topic/:topicId', component: ViewTopicComponent },
{ path: 'sub-topic/:subTopicId', component: SubTopicComponent },
{ path: '**', component: PageNotFoundComponent }, // Wildcard route for a 404 page
];
Так вы бы связались с topi c:
<a [routerLink]="['/view-topic', topic.id]">
Маршрутизатор Angular Документы отличные, они доступны здесь: Angular Документы маршрутизатора