API 서비스에서 트랜잭션을받습니다. 트랜잭션 상태가 '보류 중'인 경우 조건은 트랜잭션 상태가 '완료'가 될 때까지 계속 다시로드하고 구독합니다. '거절 당했다'. 내 코드는 처음으로 작동하고 다음에 방문 할 때 페이지가 비어 있지만 데이터를 탈퇴하더라도 콘솔에서 데이터가 계속 실행됩니다.페이지를 새로 고치지 않고 조건부로 2 차원 상쾌한 실시간 데이터
여기 내 코드입니다 :
export class TransactionSummaryComponent implements OnInit, OnDestroy {
transaction: Models.Transaction = <Models.Transaction>{};
cancelling: boolean = false;
goToPayment: boolean = false;
private dataRefreshSub: Subscription;
private subscribeToDataSub: Subscription;
private timer: Observable<any>;
constructor(
private route: ActivatedRoute,
private router: Router,
private apiService: ApiService,
private zone: NgZone,
@Inject(PLATFORM_ID) private platformId: Object) { }
ngOnInit() {
if (isPlatformBrowser(this.platformId)) {
this.getTransaction();
}
}
getTransaction() {
this.route.paramMap
.switchMap((params: ParamMap) => this.apiService.getTransaction(params.get('id')))
.subscribe((transaction: Models.Transaction) => {
this.transaction = transaction;
if (this.transaction.status === 'Pending') {
this.refreshData();
}
});
}
refreshData() {
this.dataRefreshSub = this.route.paramMap
.switchMap((params: ParamMap) => this.apiService.getTransaction(params.get('id')))
.subscribe((transaction: Models.Transaction) => {
this.transaction = transaction;
this.subscribeToData();
});
}
subscribeToData() {
this.zone.runOutsideAngular(() => {
NgZone.assertNotInAngularZone();
this.timer = Observable.timer(1, 5000);
this.subscribeToDataSub = this.timer
.subscribe(() => {
this.refreshData();
});
});
}
ngOnDestroy() {
if (this.dataRefreshSub !== undefined) {
this.dataRefreshSub.unsubscribe();
}
if (this.subscribeToDataSub !== undefined) {
this.subscribeToDataSub.unsubscribe();
}
}
}
당신은 항상 안티 패턴이며, 가장 최근의 새로 고침 구독 만 구독을 거부하는 중첩 구독이 여러 개 있습니다. 다른 모든 구독에 대한 참조를 잃게됩니다. – bryan60
그리고 무엇이 문제입니까? 너 뭐 해봤 니? 어떤 문제가 있습니까? 이것은 "내 코드 plz"웹 사이트를 수정하지 않습니다 .... – olivarra1
@ bryan60 좋아, 당신이 의미하는 걸 가지고, 나는 모든 구독을 취소하는 시도를 줄 것입니다 –