<分区>
我有一个在域下运行的 Angular 应用程序,我有一个不同的应用程序在同一域下的子路径 (/blog) 上运行。如果我尝试在浏览器中打开子路径,它会正确打开。但是如果我先打开主应用程序,然后尝试打开子路径,它会重定向到主应用程序。它似乎根本没有到达子路径应用程序。主应用程序的路由器配置为使用以下路由捕获无效子页面:
{ path: '**', redirectTo: '/' },
有没有办法忽略主应用程序中的“/blog”路由,但捕获所有其他无效路由?
<分区>
我有一个在域下运行的 Angular 应用程序,我有一个不同的应用程序在同一域下的子路径 (/blog) 上运行。如果我尝试在浏览器中打开子路径,它会正确打开。但是如果我先打开主应用程序,然后尝试打开子路径,它会重定向到主应用程序。它似乎根本没有到达子路径应用程序。主应用程序的路由器配置为使用以下路由捕获无效子页面:
{ path: '**', redirectTo: '/' },
有没有办法忽略主应用程序中的“/blog”路由,但捕获所有其他无效路由?
最佳答案
大约一年前我遇到过同样的情况。这是我所做的:
创建重定向提供程序
@NgModule({
providers: [
{
provide: 'UrlRedirect',
useValue: (route: ActivatedRouteSnapshot, state: RouterStateSnapshot) =>
{
window.location.href = (route.data as any).externalUrl;
// Angular might block reload because of same url, if does not you do not need to reload specifically and delete this line
window.location.reload();
}
}
]
})
使用解析器
现在声明一个路由并提供带有 url 的解析作为重定向的数据
{
path: 'blog',
component: NotFoundComponent,
resolve: {
// Again, Injection token can be used here instead of plain string
url: 'UrlRedirect'
},
data: {
externalUrl: 'http://www.somedomain.com/blog'
}
}
PS:你也可以为此使用一个注入(inject) token ,但对于这个例子我只使用一个字符串。
关于angular - 如何忽略 Angular 中的子路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73469419/
相关文章:
asp.net-mvc - 仅针对 MVC 5 中的指定区域在自定义位置搜索 View 文件
javascript - 为什么需要 $scope.$apply 来更新这个数组
php - Angular 2 : Send data to MySQL with php file
Angular 2 : Using pipes with ngModel
javascript - 导航到单页 Angular 应用程序中的其他页面 - timeonsite tracker JS 未正确捕获页面标题
javascript - angularJS 页面不渲染任何内容