如何使用散列位置策略捕获未散列路径?
How to catch unhashed paths using hashed location strategy?
我在解决这个问题时遇到了麻烦。我们在我们的应用程序中使用 HashLocationStrategy,在某些情况下我们不会更改它。但是我必须捕捉到包含一系列这样的数字的某些路径:
www.someurl.com/1241234
我已经实现了一个 Angular 指令来通过订阅路由器事件来捕获这些。当用户键入 url 和这样的散列位置时,它会成功捕获:
www.someurl.com/#/1241234
指令中的订阅正确捕获了 1241234 号码,我能够在重定向到 404 not found 页面之前应用我的逻辑(成功)。但是 当用户将 url 键入 www.someurl.com/1241234
时,我还必须 捕捉该系列,但这次应用程序会自动重定向 www.someurl.com/#/notfoundpage
.
有没有办法将 www.someurl.com/1241234
重定向到 www.someurl.com/#/1241234
或以某种方式处理路径定位策略 www.someurl.com/1241234
?
编辑:数字可以改变。所以它可能像 www.someurl.com/6345
、www.someurl.com/124
、www.someurl.com/983
等
我认为最好的办法是在 bootstrap 您的 angular 应用程序之前检查位置并重定向:
... imports
//check if path is a number /1234
if (location.pathname.match(/^\/\d+$/)) {
//add a hash in front of the pathname
location.replace('/#' + location.pathname);
}
//bootstrap angular
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));
我在解决这个问题时遇到了麻烦。我们在我们的应用程序中使用 HashLocationStrategy,在某些情况下我们不会更改它。但是我必须捕捉到包含一系列这样的数字的某些路径:
www.someurl.com/1241234
我已经实现了一个 Angular 指令来通过订阅路由器事件来捕获这些。当用户键入 url 和这样的散列位置时,它会成功捕获:
www.someurl.com/#/1241234
指令中的订阅正确捕获了 1241234 号码,我能够在重定向到 404 not found 页面之前应用我的逻辑(成功)。但是 当用户将 url 键入 www.someurl.com/1241234
时,我还必须 捕捉该系列,但这次应用程序会自动重定向 www.someurl.com/#/notfoundpage
.
有没有办法将 www.someurl.com/1241234
重定向到 www.someurl.com/#/1241234
或以某种方式处理路径定位策略 www.someurl.com/1241234
?
编辑:数字可以改变。所以它可能像 www.someurl.com/6345
、www.someurl.com/124
、www.someurl.com/983
等
我认为最好的办法是在 bootstrap 您的 angular 应用程序之前检查位置并重定向:
... imports
//check if path is a number /1234
if (location.pathname.match(/^\/\d+$/)) {
//add a hash in front of the pathname
location.replace('/#' + location.pathname);
}
//bootstrap angular
platformBrowserDynamic()
.bootstrapModule(AppModule)
.catch((err) => console.error(err));