问题描述
在选择模式下使用mat-select,如果选择选项中的值是对象,是否可以预先设置选择的值?
例如,如果选择中的选项如下所示
toppingList: any[] = [
{ id: 1,description: 'Extra cheese' },{ id: 2,description: 'Mushroom' },{ id: 3,description: 'Onion' },{ id: 4,description: 'Pepperoni' },{ id: 5,description: 'Sausage' },{ id: 6,description: 'Tomato' }
];
那么您可以这样为垫选择预先设置所选值吗?
this.toppings.setValue([{ id: 1,description: 'Extra Cheese' }]);
使用此stackblitz as an example,您会看到表单值已根据需要进行设置,但是下拉菜单中的选择按钮并未显示为选中状态。
这是否有可能,或者我做错了什么?
解决方法
我知道两个对象相等,例如在Java中,您需要编写equal / hashcode来检测哪个对象等于另一个对象。
您将选择值绑定到对象,而打字稿无法理解将对象进行比较的情况。因此,我更改了您的示例并将选项的值绑定到id,它可以正常工作!
查看此stackblits