问题标签 [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.

0 投票
0 回答
1333 浏览

angular - 从 FormControl,Angular 2 获取 DOM 元素

我的自定义表单验证器获取 FormControl 参数,我想访问本机 DOM 元素。如何使用 FormControl 对象获取 DOM 元素?

我需要来自 input type="file" 元素的属性文件。

0 投票
1 回答
622 浏览

angular - 如果输入 Y 获得值,则禁用输入 X 时的无限循环,反之亦然,角度为 2

我有 angular2 的反应形式。我有两个文本输入元素,每个元素都有自己的 valueChange 函数。在这种情况下,如果存在非空值,则禁用另一个输入,否则启用,这会触发另一个输入中的更改事件,从而生成无限循环。我该如何解决?

代码是这样的:

我的解决方法是在禁用或启用之前检查每个元素的状态,因此不会尝试禁用和已经禁用的元素,也不会启用已经启用的元素。有没有更清洁/更简单的方法来做到这一点?

0 投票
1 回答
2646 浏览

angular - Angular2 FormGroup 视图未在订阅中更新

我在这里做什么?

patchValue 东西运行良好,但 FormGroup 不会更新视图中的输入值。

我已经尝试使用手动触发它

此外,在其中使用 .run() 方法private _ngZone: NgZone不起作用。

这是我的代码:

HTML:

地址 .Component

}

服务:

结果数据很好,并且在订阅 env 之外按预期工作。有什么提示吗?

0 投票
1 回答
1111 浏览

angular - 如果组中的控件之一具有值,如何在 Angular 2 表单中进行简单的跨字段验证以通过验证?

这个太常用了,一定有一个简单的方法来解决这个问题!这就是这种情况。我有一个表单组:

这是组件中的表单组:

我的目标是,如果 select / ion-toggle 之一为真,并且关联的输入字段不为空并且最小长度超过 10,则验证 from 组。如果我将 [Validators.required, Validators.minLength(10)] 添加到所有字段,它将要求在验证表单组之前填写所有字段。我只希望其中一个得到验证,然后整个组都得到验证。我怎样才能做到这一点?

更新:这里是alternativeRevenueGroupValidator。

如您所见,它非常丑陋。它只能验证输入字段是否有值。我不能重视最小或最大长度或使用这样的库在此处输入链接描述

0 投票
1 回答
220 浏览

angular - 基于数组动态生成复选框列表并显示

我正在使用 ReativeForms。我有一个数组,其中包含我想显示为复选框的值。这就是我所拥有的:

饮食限制清单包括

  • RestrictionType: string = 应该是复选框的名称
  • IsChecked: boolean = 是否检查

在我的 ngOnInit() 中,我初始化了我的数组。

当我得到数据时,我做了一个 for 循环,我设置了值:

现在我想在 html 页面中显示这个:

我正在尝试遵循此示例:https ://scotch.io/tutorials/angular-2-form-validation

事情不工作。我收到一条错误消息:

我怎样才能让它工作?

0 投票
2 回答
3074 浏览

forms - Angular 2 / PrimeNG - 表达式在检查后发生了变化。在最后一个无效的表单控件上绑定 NgModel

我遇到了一个问题,当我的表单中的最后一个元素绑定了一个值时,错误“表达式在检查后发生了变化”。被抛出。

我会先说这是基于此处的 Angular 2 网站示例 - https://angular.io/docs/ts/latest/cookbook/dynamic-form.html#!#top

我的应用程序的工作方式是首先我在基于模型的表单组件中构建一个带有控件的动态表单。

我的表单组件 html 像这样循环模型中的问题

下面是问题组件 html,它使用从表单组件传入的数据通过 ngSwitch 显示某些类型的问题

最后是 radio-checkbox-question 组件

这是实际的组件 TS

我还看到了许多 SO 问题,例如以下 带有 ngmodel 的 Angular 2 动态表单示例导致“表达式在检查后已更改”,这基本上表明 [(ngModel)] 不应与动态表单一起使用,但 primeNG 文档说组件可以与模型驱动的表单一起使用,并且设置答案的唯一方法(据我所知)是 [(ngModel)]。我相信这里可能发生的事情是因为我将 formGroup 中的唯一问题设置为 formGroup 在更改检测之间变为有效并导致错误的值

Error in ./FormComponent class FormComponent - inline template:17:48 caused by: Expression has changed after it was checked. Previous value: 'false'. Current value: 'true'.

0 投票
4 回答
22108 浏览

angular - Angular 2 - 无法设置表单数组值

我收到此错误:

尚未向此数组注册任何表单控件。如果您使用的是 ngModel,您可能需要检查下一个刻度(例如使用 setTimeout)。

使用此代码时:

内部ngOnInit

collaborators包含一个值,即它不是undefinednull或为空[],类似于:

然后应用程序setValueeventSubscription.

我无法弄清楚为什么会这样。

有任何想法吗?

0 投票
1 回答
2559 浏览

angular - 在 Angular 2 中创建可选的嵌套表单组

我正在尝试在 Angular 2 中实现模型驱动的表单。我的数据模型的结构如下:

在此数据模型中,顶级名称是必需的,但描述字段是可选的。我可以将所需的验证器应用于名称,并从描述中省略验证器。

对于连接,我希望它是可选的,但如果存在连接,则它的 URL 成为必需的。同样对于连接的身份验证模型:它是可选的,但如果存在,则需要用户名和密码。

我正在尝试了解如何设置验证器来执行这些规则。我尝试从连接表单组中省略任何验证器,但这似乎需要我建立连接。我已经看到在线教程解释了如何在嵌套表单组上实现自定义验证,但没有任何内容描述如何使整个嵌套表单组成为可选。

有没有一种直接的方法可以用 Angular 2 FormGroup 实现这个模型?

0 投票
1 回答
538 浏览

angular - 设置和禁用不绑定数据的angular2表单值

如果用户可用,这是我更新表单的方法。

如果我取消注释禁用,然后单击提交,则不会在输出 json 中生成界标字段。

例如

不禁用

console.log(this.uploadForm.value) 给出

禁用

console.log(this.uploadForm.value) 给出

0 投票
1 回答
1405 浏览

angular - 为什么在我的嵌套表单中添加 Formarray 时会得到一个数组

我正在尝试开发一种与 angular2 教程非常相似的反应形式。它工作正常,但是当我想添加新问题时,我收到以下错误:

例外:./RecommendationDetailsComponent 类 RecommendationDetailsComponent 中的错误 - 内联模板:45:40 原因:找不到路径的控件:'questions -> 1 -> id'

删除问题工作正常。有没有人知道我可以在哪里找到解决方案。我不清楚这里到底是什么问题。

该模型 :

推荐细节.component.ts

HTML