Вы можете обеспечить охрану в любом модуле, но я бы предпочел предоставить его в app.module.ts. Таким образом, когда вы определяете свои маршруты, вам нужно указать только один раз сторож, и все дочерние маршруты в moduleA.module.ts будут защищены.
Так что ваши маршруты app.module будут включать это (обратите внимание, я также отложенная загрузка маршрутов ):
...
{
path: 'module-path',
loadChildren: () => import('./path/to/module').then(m => m.MyModule),
canActivate: [MyGuard]
},
...
и ваши дочерние маршруты moduleA.module должны выглядеть примерно так:
...
{ path: 'a', component: MyAComponent },
{ path: 'b', component: MyBComponent },
{ path: 'b:id', component: MyBComponent }
...
Каждый из дочерних маршрутов будет быть защищенным охранником.