【发布时间】:2017-08-12 15:26:35
【问题描述】:
我做了一个模型驱动的表单,里面有三个 formControls。其中两个用null初始化,最后一个用对象初始化。
这些值将使用包含 50 个项目的 <select> 标记进行更改。该值的类型为Object。 Internet告诉我,如果是对象值,我应该使用[compareWith]函数,所以我这样做了。
actually, angular told me (see option caveat)
前 2 个(在 null 上初始化)执行 compareWith 函数 50 次,因为有 50 个项目要比较。
最后一个(用一个对象初始化)执行这个函数 1000+(!!) 次。 我究竟做错了什么? (执行量见控制台日志)
编辑:我还尝试添加/删除 null 选项。这也会导致奇怪的执行时间。
-
null没有null选项的预填充列表 ->compareWith执行了 1200 多次。 -
null带有null选项的预填充列表 ->compareWith执行了 50 次(应该如此)。 - 没有
null选项的初始化列表:执行了1000+次 - 带有
null选项的初始化列表:执行了 1000 多次
【问题讨论】:
-
通过给他一个参考:
selectB: [this.list[0]]它只被执行了 100 次。如果它不是参考,您只需要比较功能。确定不能通过 ref? -
在我的真实用例中,我的列表来自后端,我用某个对象中的值预填充了表单控件。所以身份不一样。如果我用列表中的相应对象预填充我的表单控件,我只能传递一个引用,然后我根本不需要使用 compareWith。但是我仍然不知道为什么 compareWith 会进行如此多的迭代。
标签: angular