- Mam konfigurację kątową, która wykorzystuje dwie osłony.
canLoad
icanActivate
- zarówno znudzisz z tym samym obserwowane od @ kątowej-Redux/sklepu poprzez
@select
Pytanie: Dlaczego canActivate
pracy z zaobserwować, że @select
powraca podczas gdy canLoad
łamie wszelkie routingu odtąd na? Jaka jest różnica między dwoma strażnikami?Dlaczego osłony kątowe zachowują się inaczej podczas korzystania z @select z @ kątowego/redux-sklepowego
Powiązane kątowe problem: https://github.com/angular/angular/issues/18991
auth.guard.ts
@Injectable()
export class AuthGuard implements CanLoad, CanActivate {
@select() readonly authenticated$: Observable<boolean>; // @angular-redux/store
canLoad(): Observable<boolean> | boolean {
// return true; // works
return this.authenticated$; // ERROR: all routing stops from and to the current page
}
canActivate(): Observable<boolean> | boolean {
// return true; // works
return this.authenticated$; // works
}
}
app-routing.module
const routes: Routes = [
{
path: '',
component: SomeAComponent,
pathMatch: 'full'
},
{
path: 'someb',
component: SomeBComponent,
canActivate: [
AuthGuard
],
},
{
path: 'lazy',
loadChildren: './lazy/lazy.module#LazyModule',
canLoad: [
AuthGuard
]
},
{
path: '**',
redirectTo: '/'
}
];
Czy działa, gdy osłona 'canLoad()' jest używana w komponencie, a nie w module z opóźnionym ładowaniem? Sądzę, że jest on powiązany z programem RouterPreloader, który nie ładuje tras 'canLoad'. Z pliku 'router_preloader.d.ts': ' * Jeśli trasa jest chroniona przez strażników 'canLoad', wstępnie załadowana nie załaduje go. ' –
Myślałem, że' canLoad() 'jest używane tylko dla modułów ładowanych automatycznie? Czego można się spodziewać podczas używania go na już załadowanym module? – Markus
Jak wspomniano w wydaniu github, obserwowalne powinno zostać ukończone. Nie jestem pewien, czy zakończy się operacja '@select() readonly authenticated $ .'. Jeśli nie, "take (1)" w teorii nie może być tym, czego szukam, ponieważ nie dostarcza mi najnowszej aktualizacji ze sklepu (http://rxmarbles.com/#take). – Markus