gpt4 book ai didi

没有组件的 Angular2 路由

转载 作者:行者123 更新时间:2023-12-04 02:59:39 27 4
gpt4 key购买 nike

我要听导航开始事件并判断其是否url属性是 /logout .
如果是这样,路由器应该停止触发连续事件,例如 路线已识别 , GuardsCheckStart , ChildActivationStart 等,当我的听众检测到正确时 导航开始事件。
否则路由器应该继续路由。

我不想使用组件,因为我不会显示任何 /logout看法。

import { Component, OnInit } from '@angular/core';
import { Router, NavigationStart } from '@angular/router';


@Component({
selector: 'app-navbar',
templateUrl: './navbar.component.html',
styleUrls: ['./navbar.component.scss']
})
export class NavbarComponent implements OnInit {

constructor(
private router: Router,
) {
router.events.filter(event => event instanceof NavigationStart).subscribe(
(event: NavigationStart) => {
if (event.url == '/logout') {
this.logout();
// TODO stop firing successive events
}
}
);
}

ngOnInit() { }

logout() {
// TODO logout operations
}

}

最佳答案

您可以使用路线守卫。当路由匹配 'logout' 时,'YourGuard' 将用于激活或不激活路由。如果守卫返回true,它将被重定向到'users/sign_in'(只是一个例子)。如果没有,您可以在 YourGuard 内重定向到其他路径或执行其他操作。

{ path: 'logout', canActivate: [ YourGuard ], redirectTo: 'users/sign_in' }

您不需要“收听”路由事件。
阅读更多关于 guard 的信息 here .

关于没有组件的 Angular2 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335766/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com