为什么要在 Angular 中使用 ValueAccessor?

托马斯班德拉斯

正如我们所知,所有ValueAccessors(我的意思是:NumberValueAccessorRangeValueAccessor等)都是原生输入和 Angular 之间的“代理”接口FormControl

但是使用它的目的是什么?它不是简单的(更好)叫.valueChangesFormControl

建筑师加格

假设我对制作这样的可重用颜色选择器组件感兴趣。

具有可变不透明度的颜色选择器组件

在这个组件里面

您应该实现ControlValueAccessor接口,因为您可以访问很多功能。

  1. 写值
  2. 注册变更
  3. 注册触摸
  4. 设置禁用状态

借助这些功能,您可以管理控制对象的状态/值。通过这样做,任何组件都可以给[formControl]这个颜色选择器组件提供一个作为输入,颜色选择器可以在这些函数的帮助下更新它的值,它可以将其状态设置为已触摸或未触摸,它可以将其有效性设置为有效/无效。基本上,您可以完全控制颜色选择器组件对控制对象的控制,您可以在需要时执行所需的操作。

现在另一方面,使用此组件的其他组件可以使用 侦听值更改valueChanges,使用statusChanges侦听状态更改


当您只对监听更改感兴趣时,您可以使用valueChanges,因为在监听时您无法更新 control 的值(因为它将进入无限循环,您将更改该值,而 valueChanges 订阅将再次触发。)


TLDR;

它们都是不同的东西,有不同的用例。一个是类必须实现的接口,而另一个是任何组件都可以在函数内侦听的更改值流。将两者进行比较是不好的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么要在Typescript / Angular中使用接口(模型)?

来自分类Dev

什么时候以及为什么要在angular4中使用依赖注入令牌

来自分类Dev

为什么我需要在工厂中使用angular.copy?

来自分类Dev

为什么Angular不需要在名称中使用破折号

来自分类Dev

为什么要在AngularJS中使用$ onInit?

来自分类Dev

为什么要在golang中使用组合?

来自分类Java

为什么要在Android中使用RequestQueue?

来自分类Dev

为什么要在Dialogflow中使用动作

来自分类Dev

为什么要在结构中使用malloc?

来自分类Dev

为什么要在FRP中使用行为

来自分类Dev

为什么要在延迟中使用setTimeout

来自分类Dev

为什么要在laravel中使用npm?

来自分类Dev

为什么要在Flux中使用“动作”?

来自分类Dev

为什么要在Flink中使用kafka

来自分类Dev

为什么要在Typescript中使用接口

来自分类Dev

为什么要在ListView中使用DataTemplate?

来自分类Dev

为什么我们需要在Angular中使用“ $ event”关键字进行事件绑定?(用于输出)

来自分类Dev

为什么在Angular中使用Gulp

来自分类Dev

什么是背景?为什么要在odoo中使用?

来自分类Dev

为什么要在routerLink Angular中放斜线?

来自分类Javascript

为什么要在JavaScript变量的名称中使用$(美元符号)?

来自分类Dev

为什么要在该程序中使用fflush(stdin)?

来自分类Dev

为什么要在Git中使用core.autocrlf = true?

来自分类Dev

为什么要在Java卡程序中使用“ setSeed()”?

来自分类Java

为什么要在main方法中使用SwingUtilities.invokeLater?

来自分类Dev

为什么要在“ if”语句中使用语句?

来自分类Java

为什么要在Java中使用`transient`关键字?

来自分类Dev

蜂巢:为什么要在选择中使用分区?

来自分类Dev

为什么要在Dropwizard指标中使用CachedGauage?

Related 相关文章

  1. 1

    为什么要在Typescript / Angular中使用接口(模型)?

  2. 2

    什么时候以及为什么要在angular4中使用依赖注入令牌

  3. 3

    为什么我需要在工厂中使用angular.copy?

  4. 4

    为什么Angular不需要在名称中使用破折号

  5. 5

    为什么要在AngularJS中使用$ onInit?

  6. 6

    为什么要在golang中使用组合?

  7. 7

    为什么要在Android中使用RequestQueue?

  8. 8

    为什么要在Dialogflow中使用动作

  9. 9

    为什么要在结构中使用malloc?

  10. 10

    为什么要在FRP中使用行为

  11. 11

    为什么要在延迟中使用setTimeout

  12. 12

    为什么要在laravel中使用npm?

  13. 13

    为什么要在Flux中使用“动作”?

  14. 14

    为什么要在Flink中使用kafka

  15. 15

    为什么要在Typescript中使用接口

  16. 16

    为什么要在ListView中使用DataTemplate?

  17. 17

    为什么我们需要在Angular中使用“ $ event”关键字进行事件绑定?(用于输出)

  18. 18

    为什么在Angular中使用Gulp

  19. 19

    什么是背景?为什么要在odoo中使用?

  20. 20

    为什么要在routerLink Angular中放斜线?

  21. 21

    为什么要在JavaScript变量的名称中使用$(美元符号)?

  22. 22

    为什么要在该程序中使用fflush(stdin)?

  23. 23

    为什么要在Git中使用core.autocrlf = true?

  24. 24

    为什么要在Java卡程序中使用“ setSeed()”?

  25. 25

    为什么要在main方法中使用SwingUtilities.invokeLater?

  26. 26

    为什么要在“ if”语句中使用语句?

  27. 27

    为什么要在Java中使用`transient`关键字?

  28. 28

    蜂巢:为什么要在选择中使用分区?

  29. 29

    为什么要在Dropwizard指标中使用CachedGauage?

热门标签

归档