Angular имеет то, что называется URL Matcher.Он используется для указанного вами случая, два компонента по одному пути.Вы можете прочитать больше об этом здесь .
Его использование выглядит примерно так:
{
path: 'Path',
matcher: firstMatcher,
loadChildren: '../login/login.module'
},
{
path: 'Path',
matcher: secondMatcher,
loadChildren: '../dashboard/dashboard.module'
}
Вы можете узнать больше о том, как его реализовать в этомкомментарий к аналогичному вопросу (как разместить два компонента по одному пути).
Также, ваше решение также возможно .Я бы добавил небольшой твик, чтобы упростить его реализацию.
<div *ngIf="!isLoggedIn">
<internal-dashboard-component></internal-dashboard-component>
</div>
<router-outlet *ngIf="isLoggedIn"></router-outlet>
Поступая таким образом, вы можете нормально использовать свою маршрутизацию как обычное угловое приложение, когда пользователь вошел в систему.