信号表: 允许自定义数组项的身份跟踪
作者: maayang7777创建于 2026年9月17日更新于 2026年9月17日
标签area: formsforms: signals
@ angular/ * 软件包与特性请求相关 ?
表单
说明
我想提议一个API,用于明确定义信号表格式在调和其FieldTree时如何识别数组中的项目.
目前,当形式模型中的数组被包含新对象引用的新数组所取代时,相应的字段可能不再正确关联. 特别是,使用带有模板@用于跟踪的项目的逻辑ID会导致孤域出错.
如果该模型被故意视为真理的来源,取而代之的是新鲜的物体——例如,在从服务器收到最新数据之后,就会产生问题。
考虑一个模型,比如:
[
{id: 1,取名:"爱丽丝"},
{id: 2,取名:"鲍勃"}
[ . ]
更新后可改为:
[
{id: 1, 名:"爱丽丝更新"},
{id: 2,取名:"鲍勃"}
[ . ]
尽管这些代表相同的逻辑实体,但对象引用是不同的.
Angular的@for已经有一种表达这种区别的方法:
@ for (项目 (); 轨道项目) {
. . . . . . . .
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
然而,这控制了DOM/视图调节. 我认为信号表 可以从类似的机制 调和 菲尔德特雷本身。
为什么这看起来有用 在Angular应用中,对象身份和逻辑实体身份已经存在区别.
例如,申请可例行收到:
更新 const = 等待寄存器.get 项目(;)
型号. set(已更新);
返回的对象可能是新的实例,尽管其身份代表着同样的实体。
在这种情况下,我期望形式模型继续成为真理的来源,而形式基础设施则决定现有哪些字段对应逻辑实体.
我不建议改变@for的轨道。 相反,这将在信号形式领域(FieldTree)一级提供相应的身份识别机制。
阵列跟踪和孤行领域已经存在相关问题,包括#66711和#66796. 这些讨论确定,FieldTree的身份目前是预定的模板跟踪机制。 这个建议具体涉及当源模型被新对象实例所取代时,信号形式本身是否能够支持一个单独的,明确的逻辑身份来调和数组项目FieldTrees.
建议的解决办法
大致如下:
窗体(模型,(路径)) {{
音轨By(路径项目,项目X];
应用每个(路径项目,项目 {{{
// 战地计划...
* ;
* ;
准确的API只是一个例子;重要的部分是能够为数组项提供稳定的逻辑特征.
预期的语义是,当数组改变时:
- 同一密钥的项目被视为同一逻辑形式项目。
- 其现有的FieldTree和相关状态可以被保留.
- 新键创建了新字段。
- 删除的密钥取出相应的字段。
这将允许应用程序使用不可改变 . . . . . . .
内容来源: angular/angular