我有一个加载子组件的步进器。
我希望用户能够在他们想要后退或前进一步时按下浏览器的后退和前进按钮。
我的猜测是使用该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');
}
}
这有效,但我在控制台日志中收到错误
错误:未捕获(承诺):错误:无法匹配任何路由。URL 段:'服务/车辆/'
这是因为没有路由,它是装饰性的,仅用于按下浏览器后退按钮的目的。
我可以在不解析 URL 检查我使用的参数的情况下拥有这样的功能吗?我的猜测是你会的。
前进按钮不起作用,原因与我收到后退按钮错误的原因相同。我开始认为他们获得转发的唯一方法是将路径作为查询参数。这是真的?
我可以以某种方式停止前进按钮或将其重定向到其他地方吗?
事实上,我想要的只是让后退按钮或前进按钮不会离开该车辆组件。