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