如何使用散列位置策略捕获未散列路径?

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/6345www.someurl.com/124www.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));