问题标签 [angular-reactive-forms]
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.
angular - Angular 动态控件、@ngrx/store 和单向数据绑定:控件永远不会被标记为“脏”
我正在使用@ngrx/store
并进行单向数据绑定。
我有一个愚蠢的组件,它获取值列表为@Input()
. 基于这个列表,我创建了一个FormArray
ofFormControl
来允许用户输入。ngOnChanges
如果我SimpleChanges
为值列表提供了新值,我会这样做。
由于单向数据绑定,每次用户输入一个字符时,都会向 store 发送一个动作,并且值列表会ngOnChanges
再次出现。由于FormArray
重新创建了,它不会保留dirty
andpristine
属性。他们被重置。
我正在使用trackBy
.
属性的值对dirty
我来说很重要,因为我使用它来决定是否显示验证警报。
知道如何解决这个问题吗?
我有一个显示问题的 plunker。我使用了 BehaviorSubject 来伪造@ngrx/store
。请尝试在任何输入控件中输入值并观察dirty
和pristine
,如图所示:https ://plnkr.co/edit/xZmU4ww8Y9PEgFOCOOw4?p=info
angular-reactive-forms - angular2 在表单初始化后添加自定义验证
我在组件而不是 html 中设置自定义验证错误消息。我无法获得像错误消息对象这样的全局变量,因为表单没有被初始化。获取未定义的错误消息...
零件
angular - 是否可以禁用字段但在 Angular 中使用反应形式应用控制?
我的应用程序中有一个表单,我显示了一个动态和异步填充的字段。我想禁用此字段,但我想应用控件,因为我的表单仅在此值不为空(必需)时才有效。
我用过这段代码:
在我的页面中,该字段被禁用,但不幸的是不再应用该控件。实际上,当我阅读文档时,这很正常:
禁用控件。这意味着控件将免于验证检查,并从任何父级的聚合值中排除。其状态为禁用。
如果控件有子控件,则所有子控件都将被禁用以维护模型。
那么有没有办法禁用我的字段并使用反应形式保持控件处于活动状态?我应该使用模板中的禁用属性手动禁用我的字段吗?
angular - Angular - 是否可以在嵌套的反应形式中使用控件的路径而不是其名称?
简单地说,当使用嵌套的反应形式时,是否有可能有这样的东西:
而不是这个:
一点上下文:我们的“自定义输入”需要控件的完整路径(以及rootFormGroup
,尽管它已被排除在代码段之外)才能调用一些服务,例如:
- 与根形式的其他变量进行交叉验证。
- 加载输入的标签
- 对于 -
<select>
派生的自定义输入,加载选项
我们可以将后两者更改为使用名称而不是完整路径(只要我们不在不同的嵌套组中使用相同的名称两次),但交叉验证使用rootFormGroup.get(...)
,这反过来又调用路径。
当然,可以同时注入两者(例如 : <custom-input path="nestedFormGroup.someVariable" formControlName="someVariable">
),但这并不是非常干燥。
出于同样的原因,我想避免使用 formControl 指令(例如<custom-input path="nestedFormGroup.someVariable" [formControl]="rootFormGroup.get('nestedFormGroup.someVariable')">
:)
如果迫在眉睫,我可能可以使用一些模糊的递归函数来检查任何源自的 FormGroup/FormArrayrootFormGroup
以便找到只有其名称(而不是其完整路径)的控件,但这也不完全令人满意。
这里没有什么重要的,但绝对欢迎任何帮助或评论!
angular - Angular 2反应形式缓慢
我有一个 Angular 2 应用程序,我在其中使用反应式表单来验证数据单元格表(每一行都是一个带有自己的验证集的 FormGroup)。
我发现当有多行(10+)时,验证发生的速度会降低,有时会冻结多行(50+)。
我认为是浏览器内存使用减慢并冻结了应用程序 - 我能做些什么来减少它吗?
此外,监视浏览器内存使用情况的最佳工具是什么(除了任务管理器)?
谢谢!
angular - Async Validator Throw 预期的验证器返回 Promise 或 Observable
我试图用密码值确认密码。我已经按照异步验证器标准完成了。但我想知道它不起作用并向我抛出以下错误。请告诉任何人如何解决此错误。
期望验证器返回 Promise 或 Observable。
这是我的代码。
调用验证器:
自定义验证功能:
angular - 如何使用 Angular 以数组形式设置值
我想像这样在数组中设置值:
但我正在使用数组形式,这不起作用,即使我显式传递数组索引
例如,这是我的表单数组,我想做的是在函数中设置值
angular - 如何在Angular中的模板中获取表单控件验证错误
我有一个表单,它根据下拉列表中的某些值更改其验证。如果选择了大学 A,则要求的最小百分比为 60,如果选择了大学 B,则最小百分比下降到 55。虽然我已经找到了一种方法来获取模板中的最小错误,这样我就不必费力了在我的模板中编码百分比值。虽然我不确定这是否是正确的方法。
零件
angular - 角度反应形式保存日期选择器的值
我有一个带有日期选择器的动态控件。如何保存日期选择器的值?
这是我的模拟组件实现:
我不确定如何从日期选择器动态收集数据并将其绑定到数组以传递给服务。
dialog - Angular Dialog - 从子组件访问变量
我有一个组件,它具有打开另一个组件的对话框的功能:
从这个父组件,我想从 ChildComponent 访问一个变量。我怎样才能做到这一点?