https://stackblitz.com/edit/mat-radio-group-with-object-as-value
我创建了一个对象,它FormControl
根据给定的选择对象列表扩展和设置值。
好吧,经过一些摆弄......我意识到问题似乎是材料单选按钮正在比较选项和表单控件值的对象的内存位置,而不是比较数组的实际值。如果你知道 java 他们正在做if(OBJECT_A == OBJECT_B)
而不是if(OBJECT_A.equals(OBJECT_B))
. 我通过使循环进行比较并使用选择列表中的值来解决这个问题,并且它起作用了。
但是,它不是最佳解决方案,并且在我的实现中在某些情况下实际上停止工作。从那以后,我找到了更好的方法。这是完整的工作示例。我将单选按钮的“已检查”属性与执行正确值比较的比较函数一起使用。这有效,但仍然有另一个问题......当我重置表单时,如果单选按钮的值是默认选择,重置方法将清除选中的按钮。所以我必须在重置方法中添加一个 if 条件,以确保在重置值之前控件的值不等于默认选择。
对于遇到此问题的其他任何人。select 控件已经有一个compareWith属性,可以让您绕过所有这些。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句