Вам нужно использовать [value]
для выбора, чтобы привязать его к текущему пути.
Вот рабочий пример
В шаблоне
<select (change)="navigateTo($event.target.value)" [value]="getPath() | async">
<option
*ngFor="let row of routes"
[value]="row.value"
>
{{ row.name }}
</option>
</select>
и в компоненте
@Component({
templateUrl: './page.component.html',
styles: [``]
})
export class PageComponent {
routes = [
{ name: 'A', value: '/a' },
{ name: 'B', value: '/b' },
{ name: 'C', value: '/c/a/b' }
];
constructor(
public route: ActivatedRoute,
public router: Router,
) {}
getPath() {
return this.route.url.pipe(
map(parts => '/' + parts.map(({ path }) => path).join('/')),
filter((path) => path.length > 1), // ignore default empty path remove this and next line if you have routing correctly set up
startWith(this.routes[0].value), // some startup value if you didn't setup routing
)
}
navigateTo(path) {
this.router.navigateByUrl(path)
}
}