2017-12-14 14 views
2

각도 4 프로젝트에서 작업 중입니다.각도 4에서 모델 값이 변경 될 때 함수 호출

나는 필터 객체 globalFilter 및 방법

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

나는 버튼 filterByClient(obj) 클릭 filterByClient가 호출되고 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 (클라이언트);