正如我们所知,所有ValueAccessors
(我的意思是:NumberValueAccessor
、RangeValueAccessor
等)都是原生输入和 Angular 之间的“代理”接口FormControl
。
但是使用它的目的是什么?它不是简单的(更好)叫.valueChanges
上FormControl
?
假设我对制作这样的可重用颜色选择器组件感兴趣。
您应该实现ControlValueAccessor接口,因为您可以访问很多功能。
借助这些功能,您可以管理控制对象的状态/值。通过这样做,任何组件都可以给[formControl]
这个颜色选择器组件提供一个作为输入,颜色选择器可以在这些函数的帮助下更新它的值,它可以将其状态设置为已触摸或未触摸,它可以将其有效性设置为有效/无效。基本上,您可以完全控制颜色选择器组件对控制对象的控制,您可以在需要时执行所需的操作。
现在另一方面,使用此组件的其他组件可以使用 侦听值更改valueChanges
,使用statusChanges
等侦听状态更改。
当您只对监听更改感兴趣时,您可以使用valueChanges,因为在监听时您无法更新 control 的值(因为它将进入无限循环,您将更改该值,而 valueChanges 订阅将再次触发。)
它们都是不同的东西,有不同的用例。一个是类必须实现的接口,而另一个是任何组件都可以在函数内侦听的更改值流。将两者进行比较是不好的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句