Angular必填输入信号设置数组默认值报错,正确做法是什么?
Angular输入信号必填数组输入的正确写法问题
在使用Angular输入信号时,若想指定一个必填的数组输入,编写了如下代码:
import { input } from '@angular/core'; values = input.required<number[]>([]);
出现构建错误,错误信息为:
TS2559: Type 'never[]' has no properties in common with type 'InputOptionsWithoutTransform<number[]>'. [plugin angular-compiler]
请问正确的默认值指定方式是什么?
错误原因与解决方法
input.required()的设计逻辑是不允许传入默认值,它的作用就是强制父组件必须提供该输入值,你传入[]作为参数触发类型错误的核心原因是:该方法的参数仅接受输入配置项(比如transform),而非默认值。
根据不同需求,正确写法分为两种:
- 若需输入为必填项:直接调用
input.required<number[]>()即可,无需传参。此时父组件必须绑定该输入,否则Angular运行时会抛出错误。import { input } from '@angular/core'; values = input.required<number[]>(); - 若需输入有默认空数组,同时允许父组件可选传入:放弃使用
input.required(),改用普通input()方法并指定默认值:import { input } from '@angular/core'; values = input<number[]>([]);
内容的提问来源于stack exchange,提问作者Cory Kramer
相关产品推荐
相关产品推荐

