有没有办法在angular中有条件地设置所需的输入?

Is there any way to set the Input required conditionally in angular?

提问人:Fabio Ferrari 提问时间:10/16/2023 更新时间:10/16/2023 访问量:51

问:

我试图实现的是仅在给定另一个输入时才需要组件/指令输入,例如:

@Input() name!:string; 
@Input({ required: name!!}) surname!:string;

这可能吗?

我尝试设置,但它没有按预期工作,我唯一可能有权访问的字段是静态字段required: name!!

需要 angular input components 指令

评论


答:

0赞 Matthieu Riegler 10/16/2023 #1

这是不可能的,您可以在装饰器中参考。this

另请记住,输入是编译器独有的功能。此信息不会进入运行时捆绑包。required

0赞 Fabio 10/16/2023 #2

这种方式是不可能实现的,但是如果我很好地理解了您的目的,为了实现您的目标,您可以使用 getter 和 setter 来检查何时在您的 angular 子组件中重视所需的输入数据。 例如:

    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
  }
}