angular - 路由器出口外的角组件
问题描述
我想使用错误组件显示我的错误消息,但不想<router-outlet></router-outlet>
为经过身份验证的用户加载该组件,因此也不应显示导航菜单。
我有这样的应用程序组件..
<div>
<nav><nav>
<router-outlet></router-outlet>
</div>
我有错误处理程序,它使用 router.navigate 路由到错误组件。
但它与导航组件一起加载到路由器插座中。我想将它作为整个页面加载,并且没有导航或任何其他组件。
实现这一目标的最佳方法是什么。
解决方案
您可以使用 Shell-Component 作为需要查看标题的登录用户的入口点。
看看这个示例 StackBlitz 项目。
如果您仔细查看它的路由配置:
const appRoutes: Routes = [
{
path: '',
component: ShellComponent,
children: [
{ path: 'dashboard', component: DashboardComponent },
{ path: 'contactus', component: ContactComponent },
{ path: 'events', component: EventsListComponent },
{ path: 'events/:id', component: EventDetailsComponent },
{ path: 'home', component: HomeComponent },
{ path: 'view', component: ViewPostComponent },
{ path: '', component: PlaceholderComponent }
]
},
{ path: 'login', component: LoginComponent },
{ path: 'error', component: ErrorComponent },
{ path: '', redirectTo: '/login', pathMatch: 'full' }
];
您会看到 login 是一个外部级别的路由,不会显示任何 Header。但是一旦用户登录,用户就会被导航到''
加载ShellComponent
.
因此,您基本上可以创建另一个路由('error'
),与路由处于同一级别'login'
,然后将用户相应地导航到ErrorComponent
.
推荐阅读
- javascript - 当我尝试从“/api/products”获取数据时,为什么会出错?
- java - PDFbox在缩放旋转图像时,尺寸小于不旋转
- node.js - 在猫鼬快递中更新子文档数组
- macos - 在挂载的 EFS 卷中运行 ls 后,macOS 冻结然后重新启动
- c# - 即使文件已签名,我们软件的新版本也会收到 SmartScreen 警告
- java - 无法在 CompactSerialization 表单中使用带有 null 标头的 jose4j 验证 JWT
- c - 给定 thr GCD(=1) 和一个数字,找到第二个数字
- kotlin - 从 Java 访问 Kotlin 扩展函数
- javascript - 删除由 insertRule() 添加的 CSS 属性
- three.js - Three.js 放置一个平面通过垂直线