在 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();
我最终强制导航。这样我就可以刷新数据了。
假设我有这条路线:
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();
我最终强制导航。这样我就可以刷新数据了。