我正在实现一个控制值访问器以将它与我的角度形式集成。
在其中传递某种类型的对象是否有效/正确,或者在使用角度形式时建议使用原语?
作为 FormControl 传递的对象:
{ id: number; foo: string; }
转换此对象(在控制值访问器类中)是一种不好的做法吗?或者我应该在更高级别上转换它,当我为一个比方说发布请求准备有效负载时?
我正在寻找有关控制值访问器实现的好的和坏的做法。我读过的大部分内容都只是关于如何实现它。
我正在实现一个控制值访问器以将它与我的角度形式集成。
在其中传递某种类型的对象是否有效/正确,或者在使用角度形式时建议使用原语?
作为 FormControl 传递的对象:
{ id: number; foo: string; }
转换此对象(在控制值访问器类中)是一种不好的做法吗?或者我应该在更高级别上转换它,当我为一个比方说发布请求准备有效负载时?
我正在寻找有关控制值访问器实现的好的和坏的做法。我读过的大部分内容都只是关于如何实现它。
这样做不是一个坏习惯:如果您查看控制值访问器的 API,您会看到该compareWith
函数,用于在使用非原始值时跟踪项目的相等性。
但即使这不是一个坏习惯,你也应该在实施之前考虑一下。您的值是具有两个属性的对象。对象通常是表单组,或者如果不是,它们的属性与 ngModel 绑定。但不是完整的对象。
在您的情况下,您只有一个 ID 和一个值。为此,您可以使用简单的选择输入,因为控件可能不够复杂,无法创建控件值访问器。
总结一下:使用非原始值并不是一个坏习惯,但是制作一个控制值访问器总是很复杂,所以在做之前想一个更简单的方法。