问题标签 [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 回答
307 浏览

angular - 使用角度形式 ControlValueAccessor 和 mat-autocomplete

我有一个问题,也许有人以前遇到过..

所以问题是我希望控件只传递company.id ..但没有触发registerOn *函数..所以整个对象都通过了..关于为什么的想法?

0 投票
2 回答
338 浏览

angular - 如何在自定义 ControlValueAccessor 中使用内置 Angular 验证器

我的应用程序上有一个自定义组件继承了 ControlValueAccessor,它集成了ng-select

这个组件的目标是有一个集成 ng-select 的中心位置,以便我可以在整个应用程序中重复使用它。

这就是我调用验证方法的方式:

这就是我通常在父组件上实例化 formControl 的方式:

我想为父级提供在我的自定义组件上使用内置角度验证器的选项。(必填,电子邮件,最小,最大...)。

问题是我的自定义组件的控件值是一个字符串数组,例如该值将是:

组件看起来像这样

组件截图

问题:在我的验证函数中,我可以访问 ValidatorFn 来检查我的控件是否是有效的电子邮件。如果我的控制值是一个字符串,它会按预期工作,但它是一个字符串数组,所以它不起作用。

所以我的猜测是我需要为我的自定义组件重新实现电子邮件验证器(因为 Angular 无法神奇地找出我的自定义组件中的数据结构是有道理的)。

但我不知道如何识别定义的验证器是Validator.email.

this.controlDir.control.validator是一个函数,我不知道如何识别它是电子邮件验证器,因此我可以为电子邮件添加自定义验证。

问题:我如何从我的自定义验证函数中知道哪个验证器是从父级设置的?是 Validators.required、Validators.email ...等吗

0 投票
1 回答
67 浏览

angular - 使用 isEmpty 函数扩展 ControlValueAccessor

我有一个父表单,其中包含实现ControlValueAccessor接口的所有子表单。然后我需要从父母那里验证这些表格的空虚。isEmpty每种形式的变化逻辑。我试图ControlValueAccessor用一种isEmpty方法来扩展接口,但我从父窗体中看到的只是FormControl没有该isEmpty方法的标准子窗体。

有没有办法做到这一点?

0 投票
1 回答
502 浏览

angular - 从 ControlValueAccessor 更改 FormControl 值

我正在尝试仅为案例创建一个指令。我创建了以下代码,但尝试制作 formGroup.value 时遇到问题。该指令在视觉上改变了值(通过使用_Renderer2),但formControl仍然具有原始值,并且当使用formGroup.value从表单中获取数据时,值是小写的。有可能解决这个问题吗?谢谢

0 投票
1 回答
819 浏览

angular - 使用 ControlValueAccessor 时的角度表单控件验证

在父组件中,我定义了表单。

project然后在子组件中使用formControl 。在这个组件中,我需要一个自定义验证,我可以通过添加

除了Validators覆盖父组件中指定的内容外,这有效。

第二种方法是创建一个自定义验证器类..但是我无法从组件中获取@Input..?

更新:这是组件

0 投票
1 回答
128 浏览

angular - 使用 onPush 时角度输入未正确触发

我刚刚开始使用 ControlValueAccessor,到目前为止我真的很喜欢它,但我遇到了一个我无法解决的问题..

因此,当我更改输入中的值(不仅仅是触发 (blur) )时,这一切都可以正常工作。但是当@Input 更改时,它不会更新状态(触发 validate() )...

如果我然后更改输入中的值,它确实可以工作......删除 OnPush 可以解决问题,但不是我想要做的......

更新:模板

0 投票
2 回答
638 浏览

angular - ControlValueAccessor with FormArray in Angular

How can I pass down the formArray to child article component?

The article component does not have a formgroup (defined in parent) and I get an error: Error: formArrayName must be used with a parent formGroup directive

ParentComponent

  • ListComponent
    • ListItemComponent
#xA;#xA;#xA;

form structure should be:

#xA;
0 投票
1 回答
890 浏览

angular - 如何使用angulars controlvalueaccessor触发表单验证

当以角度处理表单时,通常的方法是将表单元素(如输入)直接放在表单中

当提交此表单并且输入具有验证器时,例如。必需的。表单输入经过验证,如果它无效,我们可以向用户展示......太好了......

为了能够重用自定义输入,我们可以创建一个包含此输入 + 附加内容的组件。

检查这个堆栈闪电战:https ://stackblitz.com/edit/components-issue-whxtth?file=src%2Fapp%2Fuser%2Fuser.component.html

当点击提交按钮时,只有一个输入被验证。如果您与两个输入进行交互,它们将验证

就我在 CVA 组件中看到的而言,没有什么奇怪的。

0 投票
1 回答
413 浏览

angular - 使用带有 CVA 的嵌套反应表单的 Angular 动态解析组件不起作用

Arrgh,使用 ReactiveForms 动态构建组件时遇到问题。

需要触发和Mat-Dialog并在其中加载一组组件 - 工作正常。需要从映射数组动态构建一些组件- 工作正常。需要使用CVA(控制值评估器)构建嵌套的反应形式- 这就是问题所在。

我有一个使用 CVA 的工作嵌套表单,可以正确更新表单数据......除非我动态构建组件。如果我使用动态组件,它们会在表单更新中被忽略。不知道如何解决这个问题。我的应用程序将是非常复杂的表单网络,因此需要弄清楚这一点!

我已将 Angular.io 指南用于动态组件。

Angular.io - 解析动态组件

并遵循本指南进行 CVA 实施

深入 - 使用 CVA

有没有人有任何想法?Stackblitz 有问题,所以将代码推送到 gitHub

开发动态补偿问题

0 投票
4 回答
647 浏览

angular - 具有自定义验证的角度材料自定义表单控件组件不会在表单提交时触发

我已经实现了一个带有自定义验证的自定义表单控件,但是一旦提交父表单,我就无法将控件标记为无效我希望当用户按下提交时,控件会失效.. 到目前为止,只有在触摸它时它才会失效.. 在我的 onDoCheck 中,我设法读取了 form.isSubmitted 属性,但我注意到该控件仍被标记为“有效”

即使我构建逻辑并在我的 onDoChek 中将其强制为无效.. 这样在提交时的父组件中我无法检查控件的有效性,因为我会在 onSubmit 回调之后设置它.. 我在这里缺少什么?

我能想到的丑陋修复是添加

在 onSubmit 回调上,但不这样做不应该开箱即用吗?

这里是stackblitz: https ://stackblitz.com/edit/angular-k5un7v?file=src%2Fapp%2Fcustom-input%2Fcustom-input.component.ts

任何帮助是极大的赞赏