在之前的代码中,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) 只有属性会被转换为信号
要有正确的变更检测策略?
当调用
[(ngModel)]="myObj.myProp"
时,你实际上正在变异 myObj
。
如果只有
myObj
是一个信号,则突变不会弄脏信号,并且反应树将收到更改通知。
您需要在
myProp
上有信号才能使其反应。
围绕带有信号的表单的 DX 目前还不是最佳,需要 Angular 团队的一些工作来改进。
像 DeepSignals 这样的结构(如 NgRx SignalStore 提出的)是解决此问题的替代方案。