Angular 4 路由器 child 找不到路径(插座)
Angular 4 router child path not found (outlet)
我在使用 Angular 4 路由器和组件时遇到了一些问题。我正在尝试做什么。我有一个视图 (SuperUser),其中包含 2 个页面(侧面菜单和内容)。
在路由器中,我有 2 个超级用户 children(侧边菜单和内容),它有自己的路由器,但我得到 无法匹配任何路由。 URL 段:'superuser/contexts' 在 http://localhost:4200/superuser/contexts uri 上。来源如下。
App.Router
export const routes: Routes = [
{
path: "home",
component: HomeComponent
},
{
path: "superuser",
component: SuperuserComponent,
children:[
{
path: "",
component: SideMenuComponent,
outlet: 'superuser-sidemenu'
},
{
path: "contexts",
component: ContextsComponent,
outlet: 'superuser-content'
}
]
},
{
path: "",
redirectTo: "/home",
pathMatch: "full"
}
]
SuperUserComponent.html
<div class="py-5 public-area-body-background">
<div class="container-fluid">
<div class="row">
<div class="col-md-2">
<div id="superuser-sidemenu">
<router-outlet name="superuser-sidemenu"></router-outlet>
</div>
</div>
<div class="col-md-10">
<div id="superuser-content">
<router-outlet name="superuser-content"></router-outlet>
</div>
</div>
</div>
</div>
</div>
SideMenuComponent.html
<div class="card text-white p-5 bg-light shadow sidemenu">
<div class="card-body sidemenu">
<h4 class="mb-4 text-dark" >Main Menu</h4>
<div class="input-group">
<select class="custom-select" id="inputGroupSelect04">
<option selected>Context...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
</div>
ContextsComponent.html
<div class="card text-white p-5 bg-light shadow">
<div class="card-body">
<p>Content here</p>
</div>
谢谢!
如果您正在使用子插座实现组件,最好将其作为一个模块。在您的情况下,您可以创建更多文件,例如 super-user.module.ts 和 super-user-routing.module.ts.
希望您在 app.module.ts 中声明了所有这些组件。这不是一个好习惯,将来您的应用会变慢。因此,从 app.module 中删除 SuperUserComponent、SideMenuComponent 和 ContextsComponent 的声明,并在新的 super-user.module.ts 文件中声明它们.另外,您可以在 superUser 中创建一个新组件并显示当前 SuperUserComponent.html 的内容,并且 SuperUserComponent.html 文件应该只包含一个 <router-outlet></router-outlet>
将 app.router 的代码更改为
export const routes: Routes = [
{
path: "home",
component: HomeComponent
},
{
path: 'superuser',
loadChildren: './super-user/super-user.module#SuperUserModule'
},
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
}
]
最后是超级用户-routing.module.ts as
export const routes: Routes = [
{
path: '',
component: SuperUserComponet,
children: [ { path: 'view', component: ListComponent},
path: 'context', component: ContextSComponent},
...]
]
现在您可以从任何地方访问这些组件,如 routerLink="/superuser/context"
等等。
要查看 super-user.component.html 的当前视图,您需要使用 routerLink="/superuser/list"
我在使用 Angular 4 路由器和组件时遇到了一些问题。我正在尝试做什么。我有一个视图 (SuperUser),其中包含 2 个页面(侧面菜单和内容)。
在路由器中,我有 2 个超级用户 children(侧边菜单和内容),它有自己的路由器,但我得到 无法匹配任何路由。 URL 段:'superuser/contexts' 在 http://localhost:4200/superuser/contexts uri 上。来源如下。
App.Router
export const routes: Routes = [
{
path: "home",
component: HomeComponent
},
{
path: "superuser",
component: SuperuserComponent,
children:[
{
path: "",
component: SideMenuComponent,
outlet: 'superuser-sidemenu'
},
{
path: "contexts",
component: ContextsComponent,
outlet: 'superuser-content'
}
]
},
{
path: "",
redirectTo: "/home",
pathMatch: "full"
}
]
SuperUserComponent.html
<div class="py-5 public-area-body-background">
<div class="container-fluid">
<div class="row">
<div class="col-md-2">
<div id="superuser-sidemenu">
<router-outlet name="superuser-sidemenu"></router-outlet>
</div>
</div>
<div class="col-md-10">
<div id="superuser-content">
<router-outlet name="superuser-content"></router-outlet>
</div>
</div>
</div>
</div>
</div>
SideMenuComponent.html
<div class="card text-white p-5 bg-light shadow sidemenu">
<div class="card-body sidemenu">
<h4 class="mb-4 text-dark" >Main Menu</h4>
<div class="input-group">
<select class="custom-select" id="inputGroupSelect04">
<option selected>Context...</option>
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
</div>
ContextsComponent.html
<div class="card text-white p-5 bg-light shadow">
<div class="card-body">
<p>Content here</p>
</div>
谢谢!
如果您正在使用子插座实现组件,最好将其作为一个模块。在您的情况下,您可以创建更多文件,例如 super-user.module.ts 和 super-user-routing.module.ts.
希望您在 app.module.ts 中声明了所有这些组件。这不是一个好习惯,将来您的应用会变慢。因此,从 app.module 中删除 SuperUserComponent、SideMenuComponent 和 ContextsComponent 的声明,并在新的 super-user.module.ts 文件中声明它们.另外,您可以在 superUser 中创建一个新组件并显示当前 SuperUserComponent.html 的内容,并且 SuperUserComponent.html 文件应该只包含一个 <router-outlet></router-outlet>
将 app.router 的代码更改为
export const routes: Routes = [
{
path: "home",
component: HomeComponent
},
{
path: 'superuser',
loadChildren: './super-user/super-user.module#SuperUserModule'
},
{
path: '',
redirectTo: '/home',
pathMatch: 'full'
}
]
最后是超级用户-routing.module.ts as
export const routes: Routes = [
{
path: '',
component: SuperUserComponet,
children: [ { path: 'view', component: ListComponent},
path: 'context', component: ContextSComponent},
...]
]
现在您可以从任何地方访问这些组件,如 routerLink="/superuser/context"
等等。
要查看 super-user.component.html 的当前视图,您需要使用 routerLink="/superuser/list"