Kai*_*tze 3 angular2-directives angular2-routing angular
我想监听NavigationStart事件并判断它的url属性是否为/logout. 如果是这样,当我的侦听器检测到正确的NavigationStart事件时,路由器应该停止触发连续事件,例如RoutesRecognized、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
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用路线守卫。当路由匹配 'logout' 时,'YourGuard' 将用于激活或不激活路由。如果守卫返回true,它将被重定向到'users/sign_in'(只是一个例子)。如果没有,您可以在 YourGuard 内重定向到其他路径或执行其他操作。
{ path: 'logout', canActivate: [ YourGuard ], redirectTo: 'users/sign_in' }
Run Code Online (Sandbox Code Playgroud)
您不需要“收听”路由事件。在此处阅读有关警卫的更多信息。
| 归档时间: |
|
| 查看次数: |
5558 次 |
| 最近记录: |