当前一个值与当前值相同时,如何为@Input值运行更改检测(更新模板)?
DEMO:https://plnkr.co/edit/Rvz2ElLjM20R3nC6ZQWt?p=preview
我正在使用ngrx
。
用例: 如果输入值为空,我想为blur事件后的输入设置默认值。
输入:
<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 =&gt;输入值:22 =&gt;清除(剪切)输入值=&gt; blur event =&gt;输入为空,将默认值(1)设置为store =&gt;商店价值:1 =&gt;输入值:1
2)商店价值:1 =&gt;输入值:1 =&gt;清除(剪切)输入值=&gt; blur event =&gt;输入为空,将默认值(1)设置为store =&gt;商店价值:1 =&gt;输入值:&#39;&#39; (空)
那么,我该如何解决这个问题?
答案 0 :(得分:0)
我不确定我理解你的问题,但这可能是你正在寻找的
导入ChangeDetectorRef
并在将值设置为旧值之前调用cdRef.detectChanges()
。