问题标签 [controlvalueaccessor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
475 浏览

angular - 如何在formControl指令以角度获取输入之前更改输入值

需要在此输入中将波斯数字转换为英文数字<input type="text" formControlName="mobile" myCustomDirective />。所以创建了一个指令,输入波斯数字事件以该值触发,然后我将其更改为英文数字,​​所有事件再次以英文数字触发。如果我阻止事件触发第二次更改,那是错误的,因为我需要使用英文数字触发事件。实际上,我需要在FormControl指令捕获它之前获取输入的值并将其更改为英语。有什么解决办法吗?

0 投票
0 回答
162 浏览

angular - writeValue 不称为 Angular 自定义表单控件

我的应用程序中有几个自定义表单控件组件,因此我实现了一个基本组件,它实现了ControlValueAccessor.

我所有的自定义表单控件都扩展了这个基类。到这里为止一切都很好。

在其中一个表单控件中,我需要替换原始writeValue方法。问题是writeValue没有调用新方法,而是调用writeValue了基类中的方法。

以前有人遇到过这个问题吗?实际上,它似乎与类继承比角度形式控制更相关,但是,我认为我已经正确地实现了这一点。希望能得到你的任何帮助。

0 投票
0 回答
118 浏览

angular - Angular 创建可重用组件

我正在使用 ControlValueAccessor 在 Angular 10 中创建一个可重用的输入类型组件。但我的问题是我的变量 formControleName 仍然未定义

我使用了在这里找到的类:https ://stackblitz.com/edit/angular-eznzw5?file=src%2Fapp%2Fcontrol-value-accessor-connector.ts 。只需添加装饰器@Directiv

我的组件:

调用 myComponent :

我不明白这个问题

0 投票
3 回答
78 浏览

angular - 使用 Jasmine 断言传递给注册回调函数的最新参数是正确的

在 Angular 的ControlValueAccessor接口中,定义了以下方法:

在测试实现的组件时ControlValueAccessor,我需要断言传递给的最新参数值fnregisterOnChange预期值。请注意,我不是为fn自己断言值,而是传递给的参数值fn传递给registerOnChange

我该怎么做?

我正在尝试这些方面的东西,但它似乎没有奏效。在我预计它会失败的情况下,测试“通过”。

0 投票
2 回答
472 浏览

angular - 嵌套 ControlValueAccessor 的角度验证状态未在父级中正确传播,如何实现此验证?

我在 Angular 10 应用程序中遇到问题,在初始化时将 formGroup 的状态传播到其父级。

问题:在组件初始化时,子表单的验证状态未在多个级别的父级中正确传播。

更准确地说,我有 3 个嵌套组件。它们都是表单,并且两个孩子都实现了 ControlValueAccessor。它们通过“formControlName”属性进行通信。最深的表单初始化错误(必填字段)。父级没有收到有效性状态(它仍然有效)。

这是问题的重现:

https://stackblitz.com/edit/ngx-sub-form-hzo8wj?file=src/app/app.component.ts

我希望“基本表单组”在初始化时无效。“level 2”的有效性应该在“level 1”中传播,然后在“base formgroup”中传播“level 1”。

它可能来自正常的角周期。

在等待更好的解决方案时,我发现了一个 hack:

在第一个角度周期之后,我们从子级手动重新启动对父级的验证。这是级联在所有子组件中的。

我怎么能避免使用这个黑客?

0 投票
1 回答
123 浏览

angular - 事件更改值时未更新 ControlValueAccessor ngModel

我有一个组件,它使用 controlvalueaccessor 绑定从父组件传递的 ngModel

密码.component.ts:

吹线是我的password.component.html:

以下是我的父组件:

我的问题是,当我使用按钮更改输入时,密码组件中的触发模型正在更新,但父组件中的changeModel值不受影响model.password

堆栈闪电战链接

0 投票
0 回答
118 浏览

typescript - 允许 FormControl 对数字字段取负值

使用 CVA 方法。无法在输入字段中键入“-”。如果我们输入一个数字并在其前面加上“-”,那么它会起作用,并且会采用负数。但是,不能先输入“-”。

试图将输入类型更改为“文本”。但是,然后验证无法正常工作。

我需要 FormControl 将负数和正数十进制数取到 9999 并直接键入“-”。

0 投票
1 回答
33 浏览

angular - 'fullName' 表单控件在文本输入期间不会更改

我正在ControlValueAccessor以儿童形式实施。我有一个父表单组和控件如下

和孩子的形式

我有以下结果: 在此处输入图像描述

该值可以仅针对email表单控件显示并在其更改时更新,但fullName在键入期间的基础相同。

0 投票
1 回答
277 浏览

angular - Angular 在模型更改时没有更新 UI 的问题

我有一个关于我的 Radiobox 组的 UI 更新的问题。

这种绑定工作正常。我的组件扩展了 ControlValueAccessor 并且当selectedOption更新如下:

该值设置正确,selectedOption但 UI 仅在我与组件交互时更新。即使打开我的日期选择器足以更新 UI,我也不必更改选择。

根据文档,UI 应在selectedOption更改以匹配该值时更改。

0 投票
1 回答
100 浏览

angular - 如何将嵌套的 formGroupName 发送到连接到控制值访问器的输入组件?

我有连接到控制值访问器的自定义组件。在这个组件中,我正在动态构建我的表单标签,如输入、文本区域等......

它一切正常 - 但是当我尝试发送嵌套表单组时遇到问题。所以在表单组中形成组。

我已经建立了这个 formGroup

si 如果我想发送password_register,我会在我的父组件中发送

但这只是我的主要 formGroup 中的一个 formControlregisterFG

现在我需要发送整个formGroup - email_register_group嵌套在我的 mainformGroup - registerFG中。

我使用自定义子组件

父组件

子组件 HTML

子组件 TS

连接到控制值访问器的cutom-component

how can i get my formGroup with two formControls inside -email_register_group`

如此处建议:

创建一个可重用的 FormGroup

但是当我做同样的事情时,i9 继续得到里面的控制 - 而不是 formGroup