ActiveRoute(예: Params) 관찰 항목의 구독을 취소해야 합니까?
나는 많은 예들을 발견합니다.ActivatedRoute
관찰 가능한 예:params
또는url
구독되었지만 구독 취소되지 않았습니다.
constructor(private route: ActivatedRoute) {}
ngOnInit() {
this.route.params
// (+) converts string 'id' to a number
.switchMap((params: Params) => this.service.getHero(+params['id']))
.subscribe((hero: Hero) => this.hero = hero);
}
- 모든 구성 요소를 생성할 때마다 경로 개체 및 구독이 자동으로 삭제되고 새로 생성됩니까?
- 제가 그것들에서 구독을 취소하는 것에 대해 신경 써야 합니까?
Observable
s? - 그렇지 않은 경우, 의 ActivatedRoute 개체 트리에서 발생하는 작업을 설명할 수 있습니까?
Router
.routerState
?
아니요.
문서에서:
구성 요소에서 관찰 가능한 항목을 구독할 때 구성 요소가 삭제될 때 거의 항상 구독을 취소합니다.
이것이 필요하지 않은 몇 가지 예외적인 관측 가능 항목이 있습니다. 활성화된 경로 관측 가능 항목은 예외 중 하나입니다.
활성화된 경로와 해당 관찰 가능한 경로는 라우터 자체와 절연되어 있습니다.라우터는 라우트된 구성요소가 더 이상 필요하지 않고 주입된 활성화된 경로와 함께 삭제됩니다.
어쨌든 자유롭게 구독을 취소하세요.그것은 해롭지 않고 결코 나쁜 습관이 아닙니다.
당첨된 답변이 다음에 대해 인용하는 것처럼subscriptions
로.ActivatedRoute
각진unsubscribes
자동으로.
방법을 알고 싶은 경우unsubscribe
부터Observables
:
import { Component,
OnInit,
OnDestroy } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
// Type
import { Subscription } from 'rxjs/Subscription';
@Component({
selector: 'app-example',
templateUrl: './example.component.html',
styleUrls: ['./example.component.scss']
})
export class ExampleComponent implements OnInit, OnDestroy {
paramsSubscription : Subscription;
constructor(private activatedRoute : ActivatedRoute) { }
/* Angular lifecycle hooks
*/
ngOnInit() {
console.log("Component initialized");
this.paramsSubscription = this.activatedRoute.params.subscribe( params => {
});
}
ngOnDestroy() {
console.log("Component will be destroyed");
this.paramsSubscription.unsubscribe();
}
}
라우터가 다른 경로로 이동하면 구성 요소가 파괴되고 routerState가 참조되지 않으므로 관찰 가능한 항목을 포함하여 가비지 수집을 자유롭게 수행할 수 있습니다.
이 구성 요소에 대한 참조를 다른 구성 요소나 서비스에 전달하면 구성 요소가 가비지 수집되지 않고 구독이 활성 상태로 유지되지만, 탐색 중에 라우터에서 관찰 가능한 항목이 완료되어 구독이 취소될 것으로 확신합니다.
구성 요소에 가입을 추가할 때마다 구성 요소가 삭제될 때 거의 항상 가입을 취소해야 합니다.그러나 라우터는 더 이상 필요하지 않을 때마다 구독을 삭제하므로 활성화된 경로 매개 변수에 가입하면 구독을 취소할 필요가 없습니다.
Http 관찰 가능 통화 및 라우터 관찰 가능 통화는 수동으로 구독을 취소할 필요가 없습니다.다른 종류의 관측치나 자신의 관측치를 다루는 경우에는 onDestroy()에서 처리해야 합니다.이 작업은 구성 요소에 관찰할 수 있는 항목을 저장하는 구독 개체 내에서 구독 취소() 메서드를 호출하여 수행합니다.
언급URL : https://stackoverflow.com/questions/41138081/do-i-have-to-unsubscribe-from-activatedroute-e-g-params-observables
'code' 카테고리의 다른 글
부트스트랩 CSS 스타일을 재정의하려면 어떻게 해야 합니까? (0) | 2023.07.27 |
---|---|
Oracle과 HSQLDB ROWNUM의 호환성 (0) | 2023.07.27 |
SYS_REFCURSOR에 동적 SQL 문 실행 (0) | 2023.07.27 |
AppCompat v7 r21이 values.xml에서 오류를 반환합니까? (0) | 2023.07.27 |
JavaScript를 사용하여 브라우저 언어를 가져오는 방법 (0) | 2023.07.27 |