Вот решение, использующее сервис Location , который не использует угловой маршрутизатор и который прослушивает фрагмент хеша в маршруте и таким образом устанавливает для него selectedIndex , таким образом, содержимое вкладок загружается на одну и ту же страницу, но активная вкладка будет соответствовать фрагменту, заданному в маршруте.
Ссылки для перехода на страницу и активации вкладки: /my-page#0
, /my-page#1
...
Вот стек-блиц : https://stackblitz.com/edit/mat-tab-sync-with-hash-fragment
import { Component } from '@angular/core';
import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
@Component({
selector: 'my-app',
templateUrl: './app.component.html',
styleUrls: [ './app.component.css' ],
providers: [Location, { provide: LocationStrategy, useClass: PathLocationStrategy }]
})
export class AppComponent {
name = 'Angular';
selectedIndex = 0;
constructor(private location: Location) {
this.selectedIndex = (+this.location.path(true).substr(1) - 1) || 0;
this.location.subscribe((value: PopStateEvent) => {
if (value.url) {
this.selectedIndex = (+value.url.substr(1) - 1) || 0;
}
});
}
}
<mat-tab-group [selectedIndex]="selectedIndex">
...
Надеюсь, это поможет.