首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何强制路由到角2中的空URL?

如何强制路由到角2中的空URL?
EN

Stack Overflow用户
提问于 2017-03-01 19:52:37
回答 1查看 926关注 0票数 0

我有一个component负责处理空的url案件:

代码语言:javascript
运行
复制
const loginRoutes: Routes = [
  { path: '',  component: LoginComponent }
];

成功登录后,用户将被路由到authenticated区域。

代码语言:javascript
运行
复制
this.router.navigate(["/secured"]);

当用户单击Sign out时,执行服务器端注销后,将尝试以下操作:

代码语言:javascript
运行
复制
this.router.navigate([""])

这不会路由回LoginComponent,而是在延迟3-5秒后重新加载整个应用程序。

我还有一个应用程序级路由文件,它包含以下内容:

代码语言:javascript
运行
复制
const appRoutes: Routes = [
  { path: '**',   redirectTo: '', pathMatch: 'full' }
];
EN

回答 1

Stack Overflow用户

发布于 2017-03-01 20:13:46

我不能发表评论,所以我会写下来作为回答。你能试试这个吗?

编辑基于注释:,因为登录组件在它自己的模块中(我将称之为子模块)。试试这个:

简单地添加{path: '', loadChildren: 'app/child/child.module#ChildModule'}

代码语言:javascript
运行
复制
const appRoutes: Routes = [
  { path: '**',   redirectTo: '', pathMatch: 'full' },
  { path: '', loadChildren: 'app/child/child.module#ChildModule'}
];

在儿童单元中:

代码语言:javascript
运行
复制
imports: [
    RouterModule.forChild([
        {
            path: '',
            component: LoginComponent
        }
    ])
]

理想情况下,你可以:

定义ChildRoutingModule:

代码语言:javascript
运行
复制
import {NgModule}     from '@angular/core';
import {RouterModule} from '@angular/router';
@NgModule({
imports: [
    RouterModule.forChild([
        {
            path: '',
            component: LoginComponent
        }
    ])
],
exports: [
    RouterModule
]
})
export class ChildRoutingModule {}

在ChildModule中:

代码语言:javascript
运行
复制
import {NgModule} from '@angular/core';
import {CommonModule} from '@angular/common';
import {LoginComponent} from './login.component';
@NgModule({
imports: [
    CommonModule,
    ChildRoutingModule
],
declarations: [
    LoginComponent
]
})
export class ChildModule {}

在AppRoutingModule中:

代码语言:javascript
运行
复制
import {NgModule}     from '@angular/core';
import {RouterModule} from '@angular/router';
@NgModule({
imports: [
    RouterModule.forRoot([
        {path: '**', redirectTo: '', pathMatch: 'full'},
        {path: '', loadChildren: 'app/child/child.module#ChildModule'}
    ])
],
exports: [
    RouterModule
]
})
export class AppRoutingModule {}

最后在app模块中:

代码语言:javascript
运行
复制
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {AppComponent} from './app.component';
import {AppRoutingModule} from './app-routing.module';

@NgModule({
imports: [
    BrowserModule,
    AppRoutingModule
],
declarations: [
    AppComponent
],
bootstrap: [AppComponent]
})
export class AppModule {}

希望这能有所帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42540777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档