2017-09-12 3 views
0

要素を作成するときに反応します<input value={this.valFromStore} />入力はストアが変更されるまでロックされます。私が入力をする角度4では、一致するような振る舞いをすることができません。 <input [ngModel]="valFromStore" />これを入力すると、入力の値が変更されます。私がsetterのないゲッターとしてvalFromStoreを設定したとしても。入力を角型の反作用のようにするには

私の入力をストアに結びつける方法はありますか(ngModel)私は単にストアを更新して、私が反応するように変更をカスケードすることができますか?

更新:明確にするための例を追加してください。反応では、testingの値がetnのような入力に表示されるように、私の入力が他のすべてのキー入力をドロップすることを期待しています。実際には_currentValueをストアから読み込んだ@inputに、handleChangeをthis.store.dispatch(newValAction)のように呼び出すようにします。

import { Component, OnInit, Input, SimpleChanges } from '@angular/core'; 

@Component({ 
    selector: 'field-type-text', 
    templateUrl: './field-type-text.component.html', 
    styleUrls: ['./field-type-text.component.css'] 
}) 
export class FieldTypeTextComponent implements OnInit { 
    _currentValue: any; 

    constructor() { } 

    private counter = 0; 
    handleChange(e) { 
    if (this.counter++ % 2) this._currentValue += e[e.length - 1] 
    } 

    ngOnInit() { 

    } 

} 

HTML

<input type="text" [ngModel]="_currentVal" (ngModelChange)="handleChange($event)" />

+0

また、 ''は運が無かった – matthewdaniel

+0

読み込み専用入力が必要ですか? –

+0

バインドにngmodelを使うべきではなく、ngrxストアから値を手動で処理するべきだと思います! –

答えて

0

私は、あなたが探していることは、入力とイベント発光するngModelの分割使用することであると考えている。この場合

<input [ngModel]="valFromStore" (ngModelChange)="callStoreChange($event)"> 

'valFromStore'外部ストアが変更されたときに更新するように既に設定されているローカル変数valFromStoreであり、callStoreChanges($event)はストアを変更します。

valFromStore@Input valueFromStoreの場合は、OnChangesSimpleChangesを実装する必要があります。 Observableの値であれば、すでにプッシュで更新するように設定されている可能性があります。

サイドノート:プロダクションAOTが構築された場合は、ストアコンポーネントの変更をテンプレートではなくローカルコンポーネントから呼び出すことを忘れないでください。

+0

@ Input currentVal:any;ストアからのものですが、親コンポーネントがストアに接続しています。 ngOnInitはthis._currentVal = this.currentValを実行しますが、ロックしたままにしておきます。したがって、 ' console.log(this.curVal)、200)は、入力に含まれていない古い値を生成します。 – matthewdaniel

+0

詳細情報が必要です。達成する。あなたは実際に達成しようとしていることに私を混乱させる "入力を変更しないように入力していることを期待しています"。 '@ Input'を使用しているので、あなたの店舗からの変更を更新するために私が言及したように、あなたは' SimpleChanges'を実装する必要があります。 –

+0

私は単純な変更をさらに見て、いくつかの詳細情報を得ようとします – matthewdaniel

関連する問題