2017-12-14 19 views
2

私は角度4のプロジェクトに取り組んでいます。モデル値が角度4で変更されたときに関数を呼び出す

私はボタンfilterByClient(obj)をクリックすると、私はglobalFilterおよび方法filterByClient

filterByClient(obj) { 
    this.globalFilter['client__uuid'] = obj.uuid; 
    this.serviceCall(this.globalFilter); // Http service call 
} 

フィルタオブジェクトを持っているが呼び出され、HTTPサービスが呼び出されます。これが解決策です。

今、もっと頑強なソリューションが必要です。 this.globalFilterで何かを変更すると、自動的にHttpサービスが呼び出されます。

Observerパターンで解決できると確信しています。しかし、私はコミュニティの手を得るためにここにいます。

+0

「this.globalFilter」の*タイプ*とは何ですか? –

+0

@NishantShreshthこれは可変オブジェクトになります。ネストされたオブジェクトを持つことができますが、現在は深さ2です。 –

答えて

2

あなたはSubjectであなたのオブジェクトをラップすることができます

globalFilterSource = new Subject<any>(); 
globalFilter$ = globalFilterSource.asObservable(); 

// handle filter update 
globalFilter$.subscribe(
    newGlobalFilter => { 
    // filter updated 
    } 
) 

// notify filter update from elsewhere 
globalFilterSource.next(newGlobalFilter); 
0

使用rxjsは、この動作を反応性するための最良の方法です。 は私が怒鳴るソリューションを提案:

  1. まずglobalFilter行動オブジェクトを設定します。

    globalFilter:BehaviourObject = new BehaviourObject(new Client());

  2. HTTP呼び出し自動的に呼び出すためのオブジェクトを購読すると、クライアントデータの変更:

    globalFilter.subscribe(クライアント=> this.serviceCall(クライアント););

  3. Emetのイベントクライアントデータ変更:

    Client.uuid = object.uuid

    globalFilter.next(クライアント)。

関連する問題