' HTML'
<input type="number" placeholder="{{'Quantity' | translate}}" min="1" max="30" matInput formControlName="quantityControl" (change)="quantityChanged()"/>
&#39; controller.ts&#39;
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);
来自&#39; rxjs / operators / startWith&#39;的startWith都没有。也不是Observable,也不是FormControl / FormGroup实例化设置的值。 ngOnInit后,表单值始终为null。有什么想法吗?
答案 0 :(得分:0)
如果我理解您的需要,您需要始终确保数量&gt; 0.
根据您的代码,这是stackblitz。
更改如下:
this.inquiryForm.get('quantityControl').valueChanges.pipe( // 1
filter(quantity => quantity < 1) // 2
).subscribe(value => {
this.inquiryForm.get('quantityControl').setValue(1); // 3
});
实现你的逻辑
1 /我们订阅到valueChange运算符(就像IngoBûrk注意到的那样)
2 /我们过滤只保留值&lt; 0(因为我们不能仅对这些值采取行动)
3 /然后每次发出值(所以&lt; 0)时,我们只需将formControl值重置为1.
关于你的初始值错误,我不知道,它对我来说就像一个魅力。