angular-ui-router - 当路由参数无效时, Angular 2 路由到 404 页面

标签 angular-ui-router angular

假设我有一个带有这样参数的路由(在 Angular 2 中):/user1/products/:id,它可能有像 /user1/products/3/这样的子路由评论

当我导航到 /user1/products/-1 时,我检查我的服务器,如果该产品不存在,我想在不影响浏览器历史记录的情况下呈现 404 页面。

使用 router.navigate(['/404'])router.navigateByUrl('/404') 似乎不起作用,因为它同时添加了 /user1/products/-1/404 到浏览器历史记录。

意思是当我在浏览器中按下后退按钮时,我回到/user1/products/-1,它立即被重定向到/404 并且我基本上停留在 /404

在 ExpressJS 中,我们会做类似 next() 的事情来将请求传递给我们的 404 处理程序。 Angular 2 中是否有等效的客户端?

最佳答案

更新

在新的 Router V3 中,您可以使用守卫,如 https://angular.io/guide/router#canactivate-requiring-authentication 中所述。

原创

我认为你应该使用 @CanActivate()做检查。如果您在 @CanActivate() 中转发,则不应将无效 URL 添加到历史记录中(未尝试)

另见 https://github.com/angular/angular/issues/4112了解如何在 @CanActivate()

中使用 DI

关于angular-ui-router - 当路由参数无效时, Angular 2 路由到 404 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599523/

相关文章:

angular - 如何从单元测试访问注入(inject)的 ngControl?

css - 这个 LESS 变量是什么语法 @grid-breakpoints : xs 0, sm 576px, md 768px, lg 992px, xl 1200px;

javascript - w/firebase.js 和 Angular UI Router 的问题

javascript - Angular-ui-router 没有默认状态并且无法从它转换

javascript - 带有 Angular 2 rc.5 的 NodeJs 路由目录

javascript - 以 Angular (5) "correct"方式将样式应用于尾随零

angular - 两次执行 promise 时“无法读取未定义的属性”

angularjs - Angular ui-bootstrap选项卡不呈现ui-view

javascript - UI 路由器无法将已解析的对象注入(inject) Controller

javascript - Ionic 和 Angularjs - 从 Controller 更新/刷新 View