Javascript 可以激活AuthGuard吗?
--请注意,这是一个stackblitz链接—现在它通过实现答案中的修复来工作—要断开它,请从Books模块路由中删除authguard:Javascript 可以激活AuthGuard吗?,javascript,angular,typescript,Javascript,Angular,Typescript,--请注意,这是一个stackblitz链接—现在它通过实现答案中的修复来工作—要断开它,请从Books模块路由中删除authguard: { path: 'books', loadChildren: './books/books.module#BooksModule', canActivate: [AuthGuard], }, books模块(src/app/books/index.ts)中的路由如下所示: export const routes: Routes = [ {
{
path: 'books',
loadChildren: './books/books.module#BooksModule',
canActivate: [AuthGuard],
},
books模块(src/app/books/index.ts
)中的路由如下所示:
export const routes: Routes = [
{ path: '', component: CollectionPageComponent },
];
export const routes: Routes = [
//{ path: '', component: CollectionPageComponent },
];
由于某些原因,加载此路由会关闭AuthGuard/CanActivate guard,但不会触发。当它触发时,它内部有一个日志记录语句
如果路线被注释为如下所示:
export const routes: Routes = [
{ path: '', component: CollectionPageComponent },
];
export const routes: Routes = [
//{ path: '', component: CollectionPageComponent },
];
然后警卫触发。想法?问题是authguard需要位于您的
BooksModule
路由定义中
#in books/index.ts
export const routes: Routes = [
{ path: '', component: CollectionPageComponent, canActivate: [AuthGuard] },
];
然后,您可以从app/index.ts中删除canActivate。您只能将
canActivate
guard与组件一起使用。如果您想在延迟加载的模块上使用guard,请使用canLoad
guard。您能进行stackblitz吗?在我的脑海里,有些东西可能会被覆盖。另外,请确保没有两次包含相同的路由路径。链接是一个断断续续的链接…我现在在它旁边放了一个便条,以便更清楚。我从angular 4开始学习,从那时起它就一直存在,不确定在此之前是否存在。我猜你在演示中发布了一些错误的链接(你分享了“通用汽车的衰落真正开始于它将人变成机器的追求”的链接,无法将其与角度相关)哦-哦-哦-谢谢提醒-这是正确的链接: