使用RouterLink重定向时无法触发ngOninit和route.params

问题描述 投票:0回答:1

我正在尝试使用routerLink从一个页面重定向到另一个页面,但重定向的链接不会触发ngOnInit()方法以及ActivatedRoute订阅。重定向的页面然后冻结,但控制台上没有错误。

所以这是我的HTML

<a [routerLink]="route(value.id)">link</i></a>

然后这是我的component.ts,它返回url

route = (id: number) => this.routeService.view(id);

这是重定向的组件edit.ts

ngOnInit() {
  this.route.paramMap.pipe(
    takeUntil(this.onDestroy$),
    map(params => console.log(params))
).subscribe(x => 'do something')

}

angular router angular-activatedroute
1个回答
1
投票

我做了一点黑客,我使用了NgZone。 routerLink指令似乎在Angular区域之外运行。因此,我使用[routerLink]="route(value.id)"而不是使用(click)="route(value.id)"。所以这就是现在的样子

HTML:

<a (click)="route(value.id)">link</i></a>

零件:

constructor(private ngZone: NgZone){}

route = (id: number) { 
    const link = this.routeService.view(id);
    this.ngZone.run(() => this.router.navigate(link));
}

感谢回复..

© www.soinside.com 2019 - 2024. All rights reserved.