angular - 如何忽略 Angular 中的子路径?

标签 angular routes angular-routing

<分区>

我有一个在域下运行的 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

c# - RouteData.Values 保持为空

c# - ASP.Net MVC 3 路由损坏

javascript - 导航到单页 Angular 应用程序中的其他页面 - timeonsite tracker JS 未正确捕获页面标题

javascript - angularJS 页面不渲染任何内容

Angular 2 - 如何访问回调中的变量并将其显示在 View 上

javascript - 如何处理 Angular 2 路由器测试版中的多个参数?