angular - 如何通过替换角路由器中的现有组件来加载新组件
问题描述
我有 customerList 组件,我在其中从服务获取数据并呈现数据。在每一行中,如果我单击任何名称,我会尝试呈现给具有不同标题和内容的新 CustomerDetail 组件。我能够加载 CustomerDetail 组件,但它位于 customerList 组件之下。
我试图通过路由解决,它没有发生
app.component.html
<div style="text-align:center">
<h1>
Welcome to {{ title }}!
</h1>
</div>
<customer-list></customer-list>
<router-outlet></router-outlet>
customerList.component.html
<mat-cell *matCellDef="let customer">
<nav>
<a href routerLink="/customer" routerLinkActive="true" (click)="onSelect(customer)">{{customer.customerName}}</a>
</nav>
</mat-cell>
customerList.component.ts
onSelect(customer){
console.log('onSelect method calls');
console.log(customer);
this.router.navigate(['/customer',customer.customerName]);
}
应用程序路由.module.ts
const routes: Routes = [
{ path: 'home', component: CustomerListComponent },
{path:'customer/:customerName', component : CustomerDetailComponent}
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
解决方案
您必须<customer-list>
从 app.component.html中删除
添加一条包罗万象的路线:
const routes: Routes = [
{ path: 'home', component: CustomerListComponent },
{ path:'customer/:customerName', component : CustomerDetailComponent},
// Add this route
{ path: '**', redirectTo: 'home' }
];
此外,将链接更改为:
<a [routerLink]="['/customer', customer.customerName]">{{customer.customerName}}</a>
推荐阅读
- php - Auth0 Laravel OIDC invalid_request 配置文件未定义
- r - 如何将内存增加到 R 进程中?
- php - PHP 中的字符串替换功能对我不起作用
- python - 没有这样的列出现错误:blog_comment.url,尽管进行了迁移
- python - 以特定的交替日期间隔或其他类型的值在绘图上设置背景颜色
- c - C - 不兼容的指针类型分配:为什么它是一个警告?
- r - 使用 expss R 加权数据并显示空白单元格“0”问题
- javascript - 如何在没有 jQuery 的情况下将播放事件绑定到 AJAX 加载的视频?
- java - 无法访问对象的方法?
- reactjs - 在从表单中获取的值上生成唯一 ID 的最简单方法(React)