【发布时间】:2018-07-05 15:05:51
【问题描述】:
我正在尝试控制组件的流程 - 某些组件无法直接访问,即必须来自前一个组件。 例如,OrderDetails 组件必须先完成并验证,然后才能访问 Payment 组件。
无法阻止用户输入“localhost:xxxxx/#/PaymentDetails”
如何检查用户是否来自 OrderDetails 组件并已完成表单? 我在下面的 PaymentDetails 组件中尝试过,但不起作用。
非常感谢任何帮助指导。
this.router.events
.filter(e => e instanceof RoutesRecognized)
.pairwise()
.subscribe((event: any[]) => {
console.log(event[0].urlAfterRedirects);
console.log(event[0]);
alert("PREVIOUS" +event[0].urlAfterRedirects);
});
this.router.events
.filter(event => event instanceof NavigationStart)
.pairwise()
.subscribe((value: [NavigationEnd, NavigationEnd]) => {
let previousUrl = value[0].url;
let nextUrl = value[1].url;
console.log(value);
alert("PR" + previousUrl);
alert("CR" + nextUrl);
});
【问题讨论】:
-
拥有一个无法访问的组件的路由有什么意义?为什么您在付款数周后没有填写订单就看不到付款明细?如果 PaymentDetails 只是某个订购向导的一个步骤,那么您可以使用守卫:angular.io/guide/router#canactivate-requiring-authentication
-
谢谢 - 这真的很有帮助
标签: angular redirect angular2-routing angular4-router