我想要实现的是仅在给出另一个输入时才需要组件/指令输入,例如:
@Input() name!:string;
@Input({ required: name!!}) surname!:string;
这可能吗?
我尝试设置
required: name!!
,但它没有按预期工作,我可能访问的唯一字段是静态字段
这是不可能的,你可以参考装饰器中的
this
。
另请记住,
required
输入只是编译器的功能。此信息不会进入运行时捆绑包。
您展示的这种方式是不可能的,但如果我很好地理解了您的目的,为了实现您的目标,您可以使用 getter 和 setter 来检查所需的输入数据何时在您的角度子组件中被赋值。 例如:
private _name: string;
public get name(): string {
return this._name;
}
@Input() public set name(value: string) {
if (value) {
// you can assign the value that come in input
this._name = value;
}
else {
// example: show a toast message error if !value
}
}