1
나는 angular2 구성 요소에서 비동기 파이프를 사용하고 observable을 전달하는 경우가 있습니다. 그건 잘 작동합니다.Angular2 Async Pipe의 구독 변경
구성 요소가 아직 '살아있다', 즉 : OnDestroy가 호출되지 않아 (따라서 비동기 파이프가 구독 됨) 관찰 가능 목록에서 가입을 취소하고 다른 구독을 구독합니다.
어떻게하면됩니까?
여기이 경우 노출 일부 의사 코드입니다 :
@Component({
selector: 'pack',
template: `
<wolf *ngFor="let wolf of pack | async">
...
</wolf>
`
})
export class PackComponent implements DoCheck {
pack;
constructor(){
this.pack = Observable.of(northwesthernWolves: Wolf[])
}
onDoCheck() {
if(some condition) {
this.pack = Observable.of(redWolves: Wolf[])
}
}
}
이것은 대답하지 않습니다. 구성 요소 클래스 내에서 비동기 구독을 변경해야합니다. 이러한 메서드는 비동기 파이프 클래스 내에서 선언되어 실행됩니다. – Francisco
대답의 요점은 당신이 이것을 신경 쓸 필요가 없다는 것이고, 당신이'this.pack = Observable.of (redWolves : Wolf [])'를 할 때 프레임 워크가 여러분을 위해 이것을 수행한다는 것입니다. 수동으로 구독을 취소해야한다고 생각한 이유는 무엇입니까? 게시 한 코드와 관련된 문제가 있습니까? – estus
내가 그렇게하면 브라우저가 차단됩니다. 구성 요소 클래스에서 구독을 변경해야하는 경우가 있습니다. 세부 사항 : 초기 구독은 SSE 이벤트이지만 약속 (두 서버 모두)에 대한 콜백도 실행합니다. SSEvents 스트림이 정상적으로 작동하는 동안 콜백이 호출되면 파이프 구독을 promise (배열)로 다시 설정하려고합니다. 나는 그 일을하기 위해 탈퇴해야 할지도 모른다고 믿는다. 그러나 확실하지는 않다. – Francisco