【问题标题】:Angular - getting an error when using named outlet: "Cannot match any routes" while navigate from canActivate guardAngular - 使用命名插座时出现错误:从 canActivate 防护导航时“无法匹配任何路由”
【发布时间】:2017-05-18 16:35:51
【问题描述】:

在我的应用程序中,我从 CanActivate 守卫导航到登录表单。

只使用一个router-outlet 就可以了。

但是当尝试使用named router-outlet 在其中显示登录组件时出现错误:

“无法匹配任何路由。URL 段:'login'”。

如何解决?

这是我的应用程序中的相关代码:

app.component.html:

<router-outlet></router-outlet>
<router-outlet name="popup"></router-outlet>

app-routing.module.ts :

const routes: Routes = [
  { path: 'login', component: LoginComponent, outlet: 'popup', },

  { path: '', component: MainComponent,
    canActivate : [AuthGuardService],
  },
];

auth-guard.service.ts:

@Injectable()
export class AuthGuardService implements CanActivate {
  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    return this.loginService
               .isAuthorised()
               .map(res => {
                  ...
                }).catch((err) => {
                  this.router.navigate(['/login']);
                });
  }
}

【问题讨论】:

    标签: angular


    【解决方案1】:

    你需要这个:

    this.router.navigate(['/', {outlets: {popup:'login')}]);

    【讨论】:

    • 现在错误是:http://localhost:3000/null - 加载资源失败:服务器响应状态为 403 (Forbidden) 为什么 "/null" ??
    • 看来这个问题已经解决了。非常感谢。
    • 你救了我的命!谢谢??‍♀️
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-05
    • 2023-04-07
    • 1970-01-01
    • 2020-04-21
    • 1970-01-01
    相关资源
    最近更新 更多