Angular AuthGuard阻止访问和重定向,但页面在加载时会被卡住

Angular AuthGuard阻止访问和重定向,但页面在加载时会被卡住,angular,Angular,路线如下所示: const routes:routes=[ { 路径:“”, 组件:NewsfeedComponent, 儿童:[ { 路径:':id/编辑', 组件:NewsfeedEditComponent, 可激活:[AdminGuard], }, { 路径:'新', 组件:NewsfeedNewcomComponent, 可激活:[AdminGuard], }, { 路径:':id', 组件:NewsfeedViewComponent, }, { 路径:“”, 路径匹配:“已满”, 组件

路线如下所示:

const routes:routes=[
{
路径:“”,
组件:NewsfeedComponent,
儿童:[
{
路径:':id/编辑',
组件:NewsfeedEditComponent,
可激活:[AdminGuard],
},
{
路径:'新',
组件:NewsfeedNewcomComponent,
可激活:[AdminGuard],
},
{
路径:':id',
组件:NewsfeedViewComponent,
},
{
路径:“”,
路径匹配:“已满”,
组件:NewsFeedHome组件,
},
],
},
];

当我现在以受保护的路由打开浏览器时,AuthGuard会正确地拒绝访问并重定向到
localhost:4200/
。但是在这个url上,angular应用程序永远不会被加载,我只看到加载屏幕,通常需要一秒钟的时间。然后我需要刷新页面以显示起始页面。

根据您的解释,我认为您需要再次从默认基本路径重定向到特定URL。(本地主机:4200)。你可以使用类似

{path:'/',重定向到:'mainpageURL',pathMatch:'full'},

通过对github问题的评论修复了它:


我只是在guard的
canActivate
方法中添加了一个重定向,然后它将返回false。

但是它不应该显示
NewsFeedHome组件吗?因为它正确地更改了url,但我必须手动刷新浏览器才能加载应用程序。是的,它应该。但请再次尝试重定向它。此外,您还可以使用this.router.navigate来实现重定向。试试看。