0

当先前值与当前值相同时,如何为@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_blurupdateFormat

我的问题是,如果插入的值与之前的值相同,则事件后的blur事件[value]="inputValue"不会更新。storestore

例如:

1)存储值:22 =>输入值:22 =>清除(剪切)输入值=>模糊事件=>输入为空,将默认值(1)设置为存储=>存储值:1 =>输入值: 1

2)存储值:1 =>输入值:1 =>清除(剪切)输入值=>模糊事件=>输入为空,将默认值(1)设置为存储=>存储值:1 =>输入值: '' (空的)

那么,我该如何解决这个问题?

4

1 回答 1

0

我不确定我是否理解您的问题,但这可能是您正在寻找的

在将值设置为旧值之前导入ChangeDetectorRef并调用after。cdRef.detectChanges()

于 2016-08-10T13:09:45.840 回答