哪个@angular/*包是bug的来源?
forms
这是一次回归吗?
是的
描述
当尝试使用表单构建器声明具有数组属性的表单时,它不起作用,它将其识别为null而不是Array。
如果这是期望的行为,应该在文档中添加。这样我们就不会浪费很多时间去理解问题是什么以及为什么代码出错了。谢谢!
请提供一个最小复现错误的链接
https://stackblitz.com/edit/angular-m2rwrv?file=src/main.ts
请提供您看到的异常或错误
Error in src/main.ts (38:19)
Object is possibly 'null'.
请提供您发现此bug的环境(运行ng version
)
Angular CLI: 15.2.4
Node: 14.21.1
Package Manager: npm 6.14.17
OS: win32 x64
Angular: 15.2.4
... animations, cli, common, compiler, compiler-cli, core, forms
... localize, platform-browser, platform-browser-dynamic, router
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1502.4
@angular-devkit/build-angular 15.2.4
@angular-devkit/core 15.2.4
@angular-devkit/schematics 15.2.4
@angular/cdk 15.2.3
@angular/material 15.2.3
@schematics/angular 15.2.4
rxjs 7.8.0
typescript 4.9.5
还有其他信息吗?
- 无响应*
3条答案
按热度按时间cnh2zyt31#
你好,
这个问题只在传递一个
Array<any>
到控制配置元组时出现。根本原因可以在ɵElement
的定义中找到:angular/packages/forms/src/form_builder.ts
第92行:| | [T]extends[PermissiveControlConfig] ? FormControl<Exclude<U,ValidatorConfig|PermissiveAbstractControlOptions>|N> : |
当传递一个
Array<any>
作为第一个参数,并且传递一个数组类型作为第二个参数时,Exclude
不起作用。这是因为ValidatorConfig
angular/packages/forms/src/form_builder.ts
第28行:| | typeValidatorConfig=ValidatorFn|AsyncValidatorFn|ValidatorFn[]|AsyncValidatorFn[]; |
Playground demo
对于你来说,显而易见的修复方法是为你的数据类型指定类型或者使用
Array<unknown>
,它也可以解决这个问题。编辑:我在控制配置中为这个特定用例提出了一个
Array<any>
的修复方案。voase2hg2#
谢谢!
它起作用了。
sr4lhrrt3#
这个问题由于不活跃而被自动锁定。
如果您遇到类似的或相关的问题,请提交一个新的问题。
阅读更多关于我们的自动对话锁定策略的信息。