angualr:8.0.6
产生的起因是,旧的版本会呈现循环援用依赖谬误;
呈现场景:
user.service.ts
import {Injectable} from '@angular/core'; import {of} from 'rxjs'; import {ActivatedRoute, Router} from '@angular/router'; import {tap} from 'rxjs/operators'; @Injectable({ providedIn: 'root' }) export class UserService { constructor( private router: Router, private route: ActivatedRoute ) { } loginByToken() { console.log('init start'); return of('111').pipe(tap(() => { setTimeout(() => { this.router.navigateByUrl('/login'); }, 2000); })); } }
解决方案是,去掉上面的依赖项
private router: Router, private route: ActivatedRoute
angular9 和 angular10 曾经解决了这个问题。不必去掉路由的局部;