- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当动态添加带有 asyncValidation 的新 FormControl 到响应式(Reactive)表单时,表单从 PENDING 变为 VALID/INVALID,但不会触发 statusChanges。
我有一个动态修改的表单,在那之后,我订阅了 statusChanges。我正在打印表单的状态,我可以检查状态是否发生变化,但 stausChanges 未触发。
这是一个例子 https://stackblitz.com/edit/angular-pvebmb?file=src%2Fapp%2Fapp.component.ts .
在此示例中,您可以检查是否订阅了 console.log 以获取 statusChanges。有一个按钮,单击该按钮后,会添加一个新的 FormControl,其中的异步验证需要 1 秒才能完成。您可以检查一下,当您单击按钮时,表单的状态(打印在 html 中)从 PENDING 变为 INVALID,但没有打印与 statusChanges 相关的 console.log。
我希望每次表单的状态值更改时都会触发 statusChanges。
最佳答案
看起来它是按设计完成的。它不会触发状态更改,因为它在初始化(或第一次运行 updateValueAndValidity
时)无效,并且如果您检查 FormControl 的代码,将阻止发出该事件。你可以在这里查看:
https://github.com/angular/angular/blob/8.2.13/packages/forms/src/model.ts#L1275
如您所见,emitEvent
是假的。
这并不能真正解决您的问题,但至少可以解释为什么会发生这种情况。在您的示例中,如果您在按下控件后立即将该值设置为空值,您将获得该 statusChange,因为那时 updateValueAndValidity
将有 emitEvent
设置为真。因此,如果您确实希望在初始化时触发 statusChanges,则变通方法会将 formControl 的 setValue 设置为空。
关于Angular form.statusChanges 不适用于动态表单 + asyncValidation,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58715125/
我正在尝试将验证字段添加到我的输入之一,它应该请求服务器输入的增值税号是否有效,因此我为此使用了异步验证器。使用此代码可以正常工作: myApp.factory('isValidVat', funct
我正在使用 Angular 1.3.* 并尝试验证我的表单。它在 ng-repeat 中。所以我可能会获得几个输入字段。我不仅要求该字段不为空,而且要求从后台取信息时要搜索成功。 我有这个输入框
我有一个包含用户名字段和其他字段的表单,该字段有一个异步验证器,用于在您尝试提交表单时检查该用户名是否可用(表单上还有其他字段使用异步验证)。我使用此指令来验证和提交表单(仅当它有效时): app.
我想对 onBlur 嵌套字段进行 asyncValidate,但没有任何反应。如果我只传递一个字符串,一切正常。我做错了什么以及如何修复我的代码: const formRedux = reduxF
我正在尝试取消 $asyncValidator promise ,但抛出了未定义的错误,这是我的代码: (function () { 'use strict'; angular .mo
是否可以让 angular 1.3 $asyncValidators 只在模糊时触发而不是在用户输入时触发?我希望 $validators 按照默认方式运行。 我知道我可以使用 ng-model-op
当动态添加带有 asyncValidation 的新 FormControl 到响应式(Reactive)表单时,表单从 PENDING 变为 VALID/INVALID,但不会触发 statusCh
redux 形式 asyncValidation很棒,但它只适用于模糊。是否有可能在按键期间发生并受到限制?所以它只每 300 毫秒运行一次,并以最终值运行? 最佳答案 是否可以?简短的回答是肯定的。
问题是这样的。如何将函数(响应)结果返回给 ngModel.$asyncValidators.usernameAvailable。如果用户存在,则 $http.get 中指定的 url 返回 true
我有一个验证指令,用于根据端点检查值 App.directive('validate', function(fooService, $q) { return { restrict: "A"
Angular 文档中的 asyncValidator 示例如下所示: ngModel.$asyncValidators.uniqueUsername = function(modelValue, v
尝试将异步验证器添加到我的自定义用户名验证器中。但是它输出错误: 类型错误:无法设置未定义的属性“用户名”。 如何定义 asyncvalidator?我以为我会被 NgModel Controller
我正在尝试添加一个新的 AsyncValidator 来检查用户的电子邮件是否已存在于数据库中。以下是可能的验证器: export class UniqueEmailValidator imple
我正在尝试对电子邮件输入进行异步验证以检查是否存在。我的指令是这样的: app.directive('emailExist', ['$http', function ($http) { return
我正在尝试为 AngularJS 电子邮件可用性检查器编写 jasmine 测试,它使用 Angular 的最新功能 - $asyncValidators 管道。这是我的指令: au_helper.d
所以我是整个网络的新手,今天我发现了 $asyncValidators。 所以经过大量尝试后,我被这个例子卡住了。 用户名.验证器 (function() { angular
我有一个在提交表单时调用的 ng-submit 函数。我想在调用任何挂起的 $asyncValidators 之后执行一些操作。 if (myForm.$pending) { var pend
我想使用 ES2017 async 和 await 语法从 Redux Form 中的验证函数返回 promise 。 .我当前的功能如下所示: export const asyncValidateU
我是一名优秀的程序员,十分优秀!