Браузер назад и вперед кнопки для каждого шага в угловом материале Stepper
У меня есть степпер, который загружает дочерние компоненты.
Я хочу, чтобы пользователь мог нажимать кнопки браузера "назад" и "вперед", когда они хотят вернуться назад или вперед на шаг.
Мое предположение использует Location
служба в @angular/common
и хранить его историю.
import { Component, OnInit, ViewChild} from '@angular/core';
import { Location } from '@angular/common';
@Component({
selector: 'app-vehicle',
templateUrl: './vehicle.component.html',
styleUrls: ['./vehicle.component.css']
})
export class VehicleComponent implements OnInit {
@ViewChild('stepper') stepper;
ngOnInit() {
this.location.subscribe(x => {
this.stepper.selectedIndex = this.stepper.selectedIndex -1;
});
}
// this adds that path to the url. I dont use path changes as params.
onVehClick() {
this.location.go(this.location.path() + '/vehicle');
}
onTypeclick() {
this.location.go(this.location.path() + '/vehicle/jetski');
}
}
Это работает, но я получаю сообщение об ошибке в журнале консоли
Ошибка: Uncaught (в обещании): Ошибка: не удается сопоставить ни один маршрут. Сегмент URL: "сервис / автомобиль /"
Это связано с тем, что маршрута нет, он косметический и предназначен только для нажатия кнопки возврата браузера.
Могу ли я иметь такую функциональность, не разбирая проверку URL для используемых мной параметров? Я думаю, что вы делаете.
Кнопка "Вперед" не работает по той же причине, по которой я получаю ошибку с кнопкой "Назад". Я начинаю думать, что единственный способ получить форвард - это выбрать путь в качестве параметров запроса. Это правда?
Могу ли я как-нибудь остановить кнопку "вперед" или перенаправить ее куда-нибудь еще?
На самом деле, все, что я хочу, это чтобы кнопка "Назад" или "Вперед" не покидала этот компонент автомобиля.
2 ответа
Без использования параметров запроса в URL-адресе вам придется проверить URL-адрес для какого транспортного средства и сравнить его со строковым значением. К сожалению, в этом случае не может быть параметров запроса
Я более или менее делал маленькие ярлыки, чтобы просто перенаправить меня обратно к пути компонента. Так что при обновлении, назад и вперед кнопки путь перенаправляется просто vehicle
дорожка. Вот мой модуль маршрутизации:
{path: 'vehicle/:vehType', pathMatch: 'full', redirectTo: 'vehicle'},
Вы можете попробовать рефакторинг, но попробуйте жестко запрограммировать весь URL и добавить динамическую часть в конце