Я имею дело с проблемой, которую до сих пор не смог решить.
Дело в том.У меня есть компонент с именем HeaderComponent
, служба с именем TabChangingService
и другой компонент с именем TabsComponent
.В HeaderComponent
у меня есть три кнопки, и у каждой из этих кнопок есть следующий метод щелчка.
click(tab: number) {
this.tabChangingService.changeTab(tab);
this.router.navigate(['/tabs'])
}
И в ngOnInit
методе TabsComponent
есть следующее:
ngOnInit() {
this.tabChangingService.tab.pipe(
tap(tab => this.tab = tab),
tap(tab => console.log('setting tab ', tab) // added this linte
).subscribe();
}
А в шаблоне у меня есть следующий код:
<ng-container [ngSwitch]="tab">
<div id="tab1" *ngSwitchCase="0">content...</div>
<div id="tab2" *ngSwitchCase="1">content...</div>
</ng-container>
Код службы следующий:
export class TabChangingService {
private _tab = new Subject<number>();
constructor() {
}
public changeTab(tab: number) {
console.log('Changing to tab ', tab); // added this line
this._tab.next(tab);
}
public get tab() {
return this._tab;
}
}
Но когда я нажимаю одну из кнопок компонента заголовка, вкладка не выбирается.Только после того, как я нажму второй раз, вкладка будет выбрана.Как вы могли заметить, компонент вкладок находится на другом маршруте, и я не знаю, что это происходит, потому что компонент не монтируется в тот момент, когда я нажимаю кнопку в первый раз или что-то в этом роде, но я надеюсь, что вы мне поможете,Заранее спасибо, очень признателен за вашу помощь.
РЕДАКТИРОВАТЬ
Когда я нажимаю одну из кнопок на заголовке в первый раз, печатается Changing tab
, однако Setting tab
нет.Setting tab
не печатается, пока я не нажму второй раз.