Угловой мат-сиденав с трассой

Я хочу реализовать страницу, как оформить заказ Ryanair www.ryanair.com/es/es/booking/extras (but first you have to select a flight), что когда вы нажимаете кнопку, маршрут меняется for example to .../extras/bags и открывает сиденав с опциями сумок, не меняя главной страницы.

Также, если вы добавите /bags к маршруту вручную, sidenav все еще открывается.

У меня есть все разные элементы для sidenav, но я не знаю, как связать их с маршрутом.

Я пытался использовать дополнительный <router-outlet name="sidenav"></router-outlet> внутри сиденав, но я не могу открыть его автоматически

1 ответ

Предполагая, что ваш sidenav находится внутри другого компонента, давайте назовем его MainComponent, тогда шаблон для MainComponent будет выглядеть примерно так:

<div>Home Page</div>
<button>Hello</button>
<mat-sidenav #bagsSidenav> ... </mat-sidenav>

Сначала вам нужно настроить маршрутизацию в модуле приложения или в файле маршрутизации. Это должно выглядеть примерно так:

const routes: Routes = [
    { path: 'main/:openSidenav', component: MainComponent},
];

Часть маршрута: openSidenav в основном указывает на то, что если пользователь вводит в маршруте www.mywebsite.com/main/bags, то "сумки" - это значение, переданное в параметр openSidenav.

Затем вам нужно внедрить Angular маршрутизатор в MainComponent в конструкторе. Затем вы можете подписаться на параметры маршрута, чтобы проверить, содержит ли путь сумки, а затем открыть sidenav:

@ViewChild('bagsSidenav') public bagsSidenav: MdSidenav;
...

constructor(private router: Router) { }

ngOnInit() {
    this.route.params.subscribe((params) => {
         if (params.openSidenav === 'bags') {
             bagsSidenav.open();
         }
    }
}
Другие вопросы по тегам