2016-09-13 4 views
4

저는 Angular 2와 Observables에서 새로운 편입니다. 그러나 스트림을 수신 할 때 구독을 변경하기 위해 "수신 대기"하는 방법을 찾지 못했습니다. 이것이 가능하거나 올바른지 모르겠습니다. 방법.RxJs : 구독을 스트림 수신시 변경하려면 "수신 대기"하는 방법?

이 내가 약속 할 사용하는 것입니다 :

// Constructor and more code 
// ... 

ngOnInit(): void { 
    this.loading.present(); 

    this.getItems() 
     .then(() => this.loading.dismiss()); 
} 

getItems(): Promise { 
    return this.itemService 
    .getItems() 
    .then(items => this.items = items); 
} 

refresh(refresher): void { 
    this.getItems() 
     .then(() => refresher.complete()); 
} 

내가 가입/관찰 가능한 그것을 시도했지만 난 그냥 모르는 방법 :

// Constructor and more code 
// ... 

ngOnInit(): void { 
    this.loading.present(); 

    this.getItems() 
     .subscribe(() => this.loading.dismiss()); 
} 

getItems(): Subscription { 
    return this.itemService 
    .getItems() 
    .subscribe(items => this.items = items); 
} 

refresh(refresher): void { 
    this.getItems() 
     .subscribe(() => refresher.complete()); 
} 

그리고 물론

, 컴파일 오류가 발생합니다 : Property 'subscribe' does not exist on type 'Subscription', Observables (RxJS)를 사용하여이를 수행하는 방법에 대한 도움말은 무엇입니까?

답변

3

Subscription은 청취자이므로 청취자의 말을들을 수 있습니까?

대신 구독 할 수 있도록 Observable을 반환해야합니다. 다음과 같이 기능을 변경하십시오 (테스트되지 않음).

getItems(): Observable<any> { 
    let obs = this.itemService.getItems().share(); 
    obs.subscribe(items => this.items = items); 
    return obs; 
} 
+0

정말 고마워요! 내가 잘못하고 있다는 것을 알았어, 그 일을 올바르게하는 법을 몰랐어. – Mathius17

관련 문제