使用数组或对象作为带有初始选择值的角度单选按钮的值

时间:2018-01-08 04:10:36

标签: angular angular-material

我有一个动态表单,我想制作无线电控制。每个选项的控件值应该是一个数组。这可以工作,但它似乎没有在页面加载时初始化选定的选项。

Here is an example我想要发生的事情(该值设置为整数,因此它可以工作)。注意"四"默认选中。

Here is an example发生了什么(值设置为数组而不选择默认值)。注意默认情况下没有选择任何内容。

如果有办法解决这个问题?我需要表单在提交时返回数组。

1 个答案:

答案 0 :(得分:0)

好吧,经过一些摆弄......我意识到问题似乎是材料单选按钮正在比较对象的内存位置以供选择和formcontrol值,而不是比较数组的实际值。如果你知道java他们正在if(OBJECT_A == OBJECT_B)而不是if(OBJECT_A.equals(OBJECT_B))。我通过做一个循环进行比较并使用选择列表中的值代替it works来解决这个问题。

但是,它不是最好的解决方案,实际上在我的实现中停止了工作。从那以后我发现了一种更好的方法。 Here is the fully working example。我使用'已检查'具有执行适当值比较的比较功能的单选按钮的属性。这有效,但还有另一个问题......当我重置表单时,如果单选按钮的值是默认选项,则重置方法将清除选中的按钮。所以我必须在reset方法中添加一个if条件,以确保在重置值之前控件的值不等于默认选项。

对于遇到此问题的其他人。选择控件已经具有compareWith属性,允许您绕过所有这些。