我正在尝试通过切片数据数组向我的 Angular 10.1.0 项目添加分页。但是,我收到TS2339: Property 'slice' does not exist on type 'WritableSignal<Data[]>'
错误。
这是我的组件的摘录:
export class Component implements OnInit {
data = signal<Data[]>([]);
currentPage: number = 1;
constructor(private httoService: HttpService) {}
ngOnInit(): void {
this.fetchData();
}
fetchData(): void {
this.httpService.getData().subscribe((data) => {
this.data.set(data);
});
}
get paginatedData() {
const start = (this.currentPage - 1) * 100;
const end = start + 100;
return this.data.slice(start, end);
}
...
}
我的 http.service.ts:
export class HttpService {
http = inject(HttpClient);
private apiUrl = 'url'
getProducts(): Observable<Data[]> {
return this.http.get<Data[]>(this.apiUrl);
}
}
我尝试在切片之前提取值:
const dataArray = Array.from(this.data().values)
但它返回 0。
我们需要执行信号,获取数组,然后
slice
您不能对信号使用 slice(),但可以通过添加 () 对信号的值执行此操作。最简单的解决方案是这样的:
但如果你想使用信号,你可以用计算信号替换 getter:
这样你的 paginationData 将是信号,你可以使用信号流。您可以简单地在 html 中(或任何您想要的地方)使用它