0
負の値を避けるにはどうすればよいですか?負の値ではなく、最小値を持つRxjsプラスのマイナスボタン
値は、あなたがそれを肯定
を取得するために二回クリックする必要があります
負になった場合、私は、フィルタが、で試してみました。
const start = 0;
const min = 0;
const max = 3
var plus$ = Observable.fromEvent(this.getNativeElement(this.btnPlus), 'click');
var minus$ = Observable.fromEvent(this.getNativeElement(this.btnMinus), 'click');
var plusOrMinus$ = Observable.merge(plus$.mapTo(1), minus$.mapTo(-1));
plusOrMinus$
.scan((acc,curr) => acc+curr, start)
.filter(x => x > min)
.subscribe(x => console.log(x));
最大値を追加したい場合は、
UPDATE
これそれは少し厄介だ分 のための作業を行う^^
const start = 0;
const min = 0;
const max = 3
const plus$ = Observable.fromEvent(this.getNativeElement(this.btnPlus), 'click');
const minus$ = Observable.fromEvent(this.getNativeElement(this.btnMinus), 'click');
const plusOrMinus$ = Observable.merge(plus$.mapTo(1), minus$.mapTo(-1));
plusOrMinus$
.scan((acc,curr) =>{
if(acc === start){
if(curr > 0){
return acc+curr;
}
}
if(acc > start){
return acc+curr;
}
else{
throw new Error('0 value');
}
},
start)
.catch((e,obs)=> obs.startWith(0))
.subscribe(x => console.log(x));
値が0より小さくならないように '.map(x => Math.max(0、x))'を追加してみませんか? – Meir
マイナスでプラスの数より多くの時間をクリックすると、accの値が依然として負であるため(フィルタと同じ) – Whisher