角度信号需要是信号对象还是内部的原始值?

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

在之前的代码中,Angular v.14 我有例如。两个物体:

objA{name:sring, value: number}, objB{name:sring, value: number}, 

以及该对象的列表:

ObjList[objA,objb]

在模板中我迭代这个 ObjList

<table *ngFor="let obj of ObjList; let i = index "> 
    <input [(ngModel)]='obj .name' 
           (keyup)=' keyup (obj)' > 
    <input [(ngModel)]='obj .value' > 
           (keyup)=' keyup (obj)' 
</table>

最终以原始值的方式绑定以及每个单独对象的相关按键函数结束。

属性是可变的,也会导致每个对象属性之间发生变化。

因此,属性必须是一个信号,或者对象本身就是一个信号就足够了。我不清楚新的变化检测是

A)对象和属性都将转换为信号
B) 只有对象会被转换为信号
C) 只有属性会被转换为信号

要有正确的变更检测策略?

angular
1个回答
0
投票

当调用

[(ngModel)]="myObj.myProp"
时,你实际上正在变异
myObj

如果只有

myObj
是一个信号,则突变不会弄脏信号,并且反应树将收到更改通知。

您需要在

myProp
上有信号才能使其反应。

围绕带有信号的表单的 DX 目前还不是最佳,需要 Angular 团队的一些工作来改进。

像 DeepSignals 这样的结构(如 NgRx SignalStore 提出的)是解决此问题的替代方案。

© www.soinside.com 2019 - 2024. All rights reserved.