我正在尝试formGroup
根据特定条件在控件中添加和删除验证器。
当我更新formGroup.updateValueAndValidity()
整个表单的验证器时,它没有更新,好像我专门申请每个控件,即formGroup.get('formControl').updateValueAndValidity()
,它正在工作,但我必须为每个控件编写,我希望这不是正确的方法。我究竟做错了什么?
if (data == 'x') {
this.myForm.get('control2').setValue(null);
this.myForm.get('control2').setValidators(Validators.nullValidator);
this.myForm.get('control1').setValidators(Validators.required);
} else if (data == 'y') {
this.myForm.get('control1').setValue(null);
this.myForm.get('control1').setValidators(Validators.nullValidator);
this.myForm.get('control2').setValidators(Validators.required);
}
this.myForm.get('control1').updateValueAndValidity();
this.myForm.get('control2').updateValueAndValidity();
Run Code Online (Sandbox Code Playgroud)
这是有效的,但是,
this.myForm.updateValueAndValidity();
Run Code Online (Sandbox Code Playgroud)
这是行不通的。
typescript form-control angular formgroups angular-validator
我有 746 个测试用例,但是当我尝试使用以下命令运行测试用例时:
"ng test --browsers='CustomChromeHeadless' --code-coverage=true --watch=false --source-map=false",
Run Code Online (Sandbox Code Playgroud)
在执行一些随机数量的测试用例后,它给出如下错误。
Chrome Headless 83.0.4103.116 (Linux x86_64) ERROR
Disconnected, because no message in 30000 ms.
Run Code Online (Sandbox Code Playgroud)
包.json
"karma": "^5.1.0",
"karma-chrome-launcher": "^3.1.0",
"karma-cli": "^2.0.0",
"karma-coverage": "^2.0.2",
"karma-coverage-istanbul-reporter": "^3.0.3",
"karma-jasmine": "^3.3.1",
"karma-jasmine-html-reporter": "^1.5.4",
"karma-junit-reporter": "^1.2.0",
Run Code Online (Sandbox Code Playgroud)
业力配置文件
// Karma configuration file, see link for more information
// https://karma-runner.github.io/0.13/config/configuration-file.html
module.exports = function (config) {
config.set({
basePath: '',
frameworks: ['jasmine', '@angular-devkit/build-angular'],
plugins: [
require('karma-jasmine'),
require('karma-chrome-launcher'),
require('karma-jasmine-html-reporter'),
require('karma-junit-reporter'),
require('karma-coverage-istanbul-reporter'),
require('karma-junit-reporter'),
require('@angular-devkit/build-angular/plugins/karma'),
],
client: {
clearContext: false, // leave Jasmine …
Run Code Online (Sandbox Code Playgroud)