以前の値が現在の値と同じ場合に @Input 値の変更検出 (更新テンプレート) を実行する方法は?
デモ: https://plnkr.co/edit/Rvz2ElLjM20R3nC6ZQWt?p=preview
を使用してngrx
います。
ユースケース: 入力値が空の場合、ぼかしイベントの後に入力のデフォルト値を設定したい。
入力:
<input
id="format"
class="form-control"
type="text"
[value]="inputValue"
(keyup)="keyup$.next($event.target.value)"
(blur)="blur$.next($event.target.value)"
>
[value]="inputValue"
-@Input
から取得したダム コンポーネントの値store -> format
。store
この方法でから値を取得します。
//main component
//template
template: `<format-input [inputValue]="format$ | async" (outputValue)="updateFormat($event)"></format-input>`
this.format$ = this.store.let(getFormat());
//form-reduser.ts
export function getFormat () {
return (state$: Observable<GeneratorFormState>) => state$
.map(s => s.format);
}
両方keyup
とblur
アクションを実行しますupdateFormat
。
私の問題は、挿入された値が前の値と同じであった場合、blur
イベントの後[value]="inputValue"
が更新されないことです。store
store
例えば:
1) 値を保存: 22 => 入力値: 22 => 入力値をクリア (カット) => ぼかしイベント => 入力が空、既定値 (1) を保存に設定 => 値を保存: 1 => 入力値: 1
2) 値を保存: 1 => 入力値: 1 => 入力値をクリア (カット) => ぼかしイベント => 入力が空で、既定値 (1) を保存に設定 => 値を保存: 1 => 入力値: '' (空の)
それで、どうすればこれを修正できますか?