使用带有setTimeout()的路由保护器无法按角度路由到相同/当前页面

时间:2020-04-24 00:42:08

标签: angular typescript settimeout angular-route-guards

我无法路由到同一页面,并且不确定此处缺少什么。如果我删除setTimeout函数,它可以正常工作,但不能与setTimeout一起工作。

有什么办法可以延迟路由吗?

with

这是我的SamplePage,它将仅使用路由参数中的消息。 html文件仅显示该消息。

SamplePage

{
    path: 'sample-page',
    component: SamplePageComponent,
    canActivate: [SampleGuard]
  }

SampleGuard 这只会导航到同一页面6次,然后返回false。

import { Component, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
import { Subscription } from 'rxjs';

@Component({
  selector: 'app-sample',
  templateUrl: './sample-page.component.html',
  styleUrls: ['./sample-page.component.scss']
})
export class SamplePageComponent implements OnInit, OnDestroy {  
  message: string;

  routeParamsSubscription: Subscription;
  constructor(private activatedRoute: ActivatedRoute, private router: Router) {
    console.log(' in constructor');
  }

  ngOnInit(): void {
    console.log('in in ng init');
    this.routeParamsSubscription = this.activatedRoute.params.subscribe(params => {
      this.message = params.message;
    });
  }

  ngOnDestroy(): void {
    this.routeParamsSubscription.unsubscribe();
  }
}

谢谢。

0 个答案:

没有答案