The correct solution to your problem is not go around router-outlet, but using one extra component (lets call it RootComponent) with router-outlet (RO1), but without nav and side menu. In RO1 you should load either your component NavMenuComponent (with the nav, side menu and its own router-outlet RO2). Then you can use child routes to ensure that in RO1 in RootComponent is loaded either NavMenuComponent (which will have nav and side menu) or LoginComponent (which will have no nav and side menu). In RO2 will be loaded the content as you have it now.
Assuming RootComponent is the deafult component in your module, routes will look like this:
const appRoutes: Routes = [
{ path: 'login', component: LoginComponent },
{
path: '',
redirectTo: 'login',
pathMatch: 'full'
},
{
path: 'app', component: NavMenuComponent,
children: [
{ path: 'youorldpath1', component: YourOld1Component }, //the path will /app/youroldpath1 instead of /youroldpath1
{ path: 'youorldpath2', component: YourOld2Component, canActivate: [CanActivateViaAuthGuard] },
{ path: '**', component: ErrorComponent }
]
},
{ path: '**', component: ErrorComponent }
];
RootComponent can have only :
<router-outlet></router-outlet>
More info here: https://angular.io/guide/router#child-routing-component