如何对角度信号做一些限制?

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

我是信号新手,在理解基础知识方面遇到一些困难。

  public currentPage: WritableSignal<number> = signal(1);
  public totalPages: Signal<number> = computed(() => {
    return Math.max(1, Math.ceil((this.totalCount() ?? 0) / this.pageSize()));
  });

检查 currentPages 是否高于totalPages 是有意义的,在这种情况下设置为 1。

effect(() => {
  if (this.currentPage() > this.totalPages()) {
    this.currectPage.set(1);
  }
});

但是不建议使用 .set 实际上,为此我必须添加 {allowSignalWrites: true },并防止循环 untracked() 但这看起来很奇怪。

对此建议采取什么方法?我错过了什么吗?

angular signals
1个回答
0
投票

最好将这段代码从

effect
移出,放到你设置当前页面的地方。这将解决您的问题。

setCurrentPage() {
  if (this.currentPage() > this.totalPages()) {
    this.currentPage.set(1);
  } else {
    this.currentPage.update((prev) => prev + 1);
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.