클릭 가능한 차트가 포함 된 중첩 된 구성 요소가 있으며 선택 가능한 세 개의 섹션이 있으며 그 중 하나 인 md-tab-group의 selectedIndex를 설정합니다. 첫 번째 탭으로 이동하고 두 번째 탭은 두 번째 탭으로, 세 번째 탭은 세 번째 탭으로 이동합니다.각도 2 - BehaviorSubject with Loop를 만드는 서비스
문제는 내가 사용하고있는 서비스가 일종의 루프를 만드는 것 같습니다. 내가 서비스를하는 단계를 콘솔로 할 때마다 점점 더 커지고 있습니다.
관련 서비스 코드 :
changeActiveTab(number) {
console.log("Before: ");
this._activeTab.subscribe(val => console.log(val));
this._activeTab.next(number);
console.log("After");
this._activeTab.subscribe(val => console.log(val));
}
내가 첫 번째 섹션을 클릭 주 탐색으로 차트로 다시 이동 한 과정을 두 번 더 반복 할 때 볼 무엇 :
Before:
0
1
After
1
Before:
1
2
2
2
After:
2
Before:
2
3
3
3
3
3
3
After
3
을
나는 BehaviorSubject 's에 대해 꽤 새로운데, 내가 잘못 가고있는 어떤 아이디어가 있니?
(즉 어떤 도움이된다면 내가 사용하는 내 예 here 출신)
부모 구성 요소에 대한관련 코드 : 하위 구성 요소에 대한
selectedTab: number;
subscription:Subscription;
constructor(private _activeTabService: ActiveTabService) { }
ngOnInit() {
this.subscription = this._activeTabService.activeTab$.subscribe(
selectedTab => this.selectedTab = selectedTab);
}
ngOnDestroy(){
this.subscription.unsubscribe();
}
관련 차트 TS :
onClick(event){
if(event.series == 'Table'){
this.changeActiveTab(1);
}
if(event.series == 'Chairs'){
this.changeActiveTab(2);
}
if(event.series == 'Desks'){
this.changeActiveTab(3);
}
}
는 확인 주셔서 감사합니다! 이것이 어떻게 생겼는지 설명해 주시겠습니까? 탭을 설정하고 돌아 오는 경우 현재 가지고있는 것과 거의 같지 않습니다. – gv0000
간단한 예제를 추가했습니다. – Avi
예제에서 BehaviorSubject를 사용하고 Subject를 사용하는 것이 중요합니까? 그래서 내 온 클릭 기능과 같이 보일 것이다. { this.tabService.registerTab을 '온 클릭 (이벤트)() 가입 ( (고해상도) => { 을 경우 (event.series == '테이블') { this.changeActiveTab (1)} 경우 (event.series == '자') { this.changeActiveTab (2)} 경우 (event.series == '데스크') { this.changeActiveTab (3); } } } ' – gv0000