Невозможно вызвать ngOninit и route.params при перенаправлении с использованием RouterLink - PullRequest
0 голосов
/ 21 марта 2019

Я пытаюсь перенаправить с одной страницы на другую с помощью 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')

}

1 Ответ

1 голос
/ 21 марта 2019

Я немного взломал, я использовал NgZone. Директива routerLink выходит за пределы угловой зоны. Поэтому вместо использования [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));
}

Спасибо за ответ ..

...