Angular 如何设置输入';来自另一个输入的默认值';角的s值?

Angular 如何设置输入';来自另一个输入的默认值';角的s值?,angular,typescript,Angular,Typescript,角度2+ 我有一个接受两个输入的组件 totalCarsNumber availableCarsNumber totalCarsNumber是必需的,但是availableCarsNumber不是 我想知道的是如何将availableCarsNumber的默认值设置为与totalCarsNumber 我试过了,但没用: @Input() totalCarsNumber: Number; @Input() availableCarsNumber = this.totalCarsNumber;

角度2+ 我有一个接受两个输入的组件

  • totalCarsNumber
  • availableCarsNumber
totalCarsNumber
是必需的,但是
availableCarsNumber
不是

我想知道的是如何将
availableCarsNumber
的默认值设置为与
totalCarsNumber

我试过了,但没用:

@Input() totalCarsNumber: Number;
@Input() availableCarsNumber = this.totalCarsNumber;

);组件初始化后,通过Angular的@Input传递到的TDLR值变为可用,因此,totalCarsNumber的值在
ngOnInit
中可用。因此,您必须使用
ngOnInit
来实现它

可选输入需要用问题后缀进行注释。
编号
类型应小写。此外,我们将null设置为可选输入的默认值,以便稍后在设置时检查它

@Input() totalCarsNumber: number;
@Input() availableCarsNumber?: number = null;
然后我们可以使用
ngOnInit
检查组件上是否提供了
this.availableCarsNumber
的值,否则它将为空,然后我们将该值设置为
totalCarsNumber

ngOnInit() {
  this.availableCarsNumber = this.availableCarsNumber === null ? this.totalCarsNumber : this.availableCarsNumber;
}

在输入属性中使用属性设置器,我们可以检测并设置它的默认值

  availableCars:number = null;
  @Input() availableCarsNumber: number = null;

  //This property setter is called anytime the input property changes
  @Input() set totalCarsNumber(val: number){
    if(this.availableCarsNumber === null){
     this.availableCarsNumber = val;
    }
    this.availableCars = val;
  }

  //This getter is called when reading and displaying data
  get totalCarsNumber(){
    return this.availableCars;
  }

我做了一个小的演示,你可以检查它

是的,但我想知道是否有一种类似于我在上面发布的依靠
ngOnInit
的方法,或者仅仅使用输入的任何其他方法。如果有
0
可用的汽车,这将是不正确的(它将错误地拥有所有可用的汽车)。此外,如果输入发生变化,此解决方案将不起作用。解决了您的特定问题@MuhammadSaleh。我解决了@DanielWStrimpel提到的问题。您的代码仍然没有正确设置可用的车辆,即使您进行了新的更改。我知道我可以在
ngOnInit
中执行此操作,或者在某个地方为其编写逻辑,但我想知道是否可以使用仅输入此项不起作用,因为当对象为新对象时,您将把可用车辆设置为尚未设置的车辆总数(而不是通过角度输入初始化车辆总数值时)@DanielWStrimpel是,除非对其进行了特别处理,我正在检查这些值是否会每次更改,您需要在
OnChanges
生命周期钩子中处理此问题,而不是在
OnInit
钩子中处理此问题。您需要执行严格的
null
检查。如果可用的车号为
0
,则代码的行为将不正确。