'HTML'
<input type="number" placeholder="{{'Quantity' | translate}}" min="1" max="30" matInput formControlName="quantityControl" (change)="quantityChanged()"/>
'controller.ts'
this.inquiryForm = this.formBuilder.group({
'quantityControl': new FormControl(1, [Validators.min(1), Validators.max(30)])
});
this.inquiryForm.get('quantityControl').valueChanges.pipe(
startWith(1),
map(quantity => this.currentQuantity = (quantity > 0 ? quantity : 1))
).startWith(1);
来自'rxjs / operators / startWith'的startWith和Observable都没有,甚至没有在FormControl / FormGroup实例化中设置的值 . ngOnInit后,表单值始终为null . 有什么想法吗?
1 回答
如果我理解您的需要,您希望确保数量始终> 0 .
这是stackblitz基于您的代码 .
变化在这里:
实现你的逻辑
1 /我们 subscribe 到valueChange运算符(就像IngoBûrk注意到的那样)
2 /我们过滤只保留值<0(因为我们不能仅对这些值采取行动)
3 /然后每次发出值(所以<0)我们只需将formControl值重置为1 .
关于你的初始值误差,我不知道,它对我来说就像一个魅力 .