在 Angular 中刷新子路由

Refresh Sub-Route in Angular

假设我有这条路线:

home/authors/authorId/books-list

并且我在 AuthorComponent(authorId) 的下拉列表中选择了年份 2022。年份值存储在服务中。

然后我需要将年份更改为 2021 并重新加载书籍列表组件以获取 2021 数据。

我不能刷新球洞路线,否则我会失去我选择的年份

所以,每当我在下拉列表中更改所选年份时,我只需要强制重新加载路线的最后一部分。

有一种方法可以强制组件“books-list”重新加载它的数据吗?

有什么建议?

PS.: 这个逻辑我改不了大的。

您可以使用 ChangeDetectorRef 来重新加载组件。

第一个

import { ChangeDetectorRef, ChangeDetectionStrategy } from '@angular/core';

并在组件装饰器中添加 ChangeDetectionStrategy:

@Component({
  selector: 'app-your',
  templateUrl: './your.component.html',
  styleUrls: ['./your.component.scss'],
  changeDetection: ChangeDetectionStrategy.OnPush
})

然后在您的组件构造器中注入 ChangeDetectorRef:

contructor(private cdRef:ChangeDetectorRef)

最后,在更改日期时在回调中添加函数调用:

this.cdRef.detectChanges();

我最终强制导航。这样我就可以刷新数据了。