Angular 17 - 另一个信号的参考信号

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

我正在 HomeComponente 中工作,我正在从数据库中提取两个数组的数据,我正在使用信号来存储我的查询

aList = signal<A[]>([])
bList = signal<B[]>([])

我的组件显示数组项的列表,单击按钮列表会发生变化,因此我开发了一个 ReferenceSignal,仅更改该值并避免口是心非

listReference = signal<WritableSignal<A[] | B[]>>(aList)

我想问一下,这是一个好的做法吗?如果我有一个信号存储对另一个信号的引用,那么信号在内部如何工作?

谢谢

javascript angular typescript signals
1个回答
0
投票

我想问一下,这是一个好的做法吗?如果我有一个信号存储对另一个信号的引用,那么信号在内部如何工作?

不,你只是嵌套信号,除非你找到这样做的真正充分的理由,否则你可以用更简单的方法来做!我们可以使用

computed
信号,它会触发一个变化,当它里面的信号发生变化时,这也可以毫不费力地生成你需要的东西!

aList = signal<A[]>([]); // load data into signals at a later point of time!
bList = signal<B[]>([]); // load data into signals at a later point of time!
toggle = signal<string>('a'); // this signal can be used as trigger to toggle between the two signals a and b
listReference: WritableSignal<A[] | B[]> = computed(() => {
                                               const toggle = this.toggle();
                                               return toggle === 'a' ? this.aList() : this.bList();
                                           });

HTML

<button (click)="toggle.set(toggle() === 'a' ? 'b' : 'a')"> Toggle the views</button>
© www.soinside.com 2019 - 2024. All rights reserved.