【发布时间】:2021-03-30 19:48:52
【问题描述】:
我的网址是 localhost:port/home 当我点击一个垫子标签时,我想将 url 调整为 home/secondTab、home/thirdTab 或 home/firstTab。我本来希望使用这种设置,但它不起作用。
我想构建一个路由,目标是当我告诉路由器 router.navigate(['home/secondTab'] 时,他会加载 homecomponent 和 secondTabComponent 并且用户将 secondTab 作为焦点。
所有子路由(home/secondTab)似乎都不起作用,url 永远不会在点击时更新,当我自己输入 home/secondTab url 时,HomeComponent 会被加载。 所以简而言之,没有任何效果,也找不到与每个人都使用 nav mat + mat-tab-link 相同的设置示例
我对前端开发还很陌生,官方文档对我来说不是很清楚。 每个组件都需要一个路由模块吗?或者我可以在此设置中的应用程序路由中全部完成它们吗? 是否有可能通过我拥有的设置获得我想要的东西,或者我错过了什么? 感谢您的意见。
对于那些指向 nav mat + mat-tab-link 的人,由于其他流程以这种方式工作,我无法像那样重构它。
home.html
<mat-tab-group (selectedTabChange)="selectedTabChanged($event)" >
<mat-tab label="FirstTab" >
<app-FirstTab></app-FirstTab>
</mat-tab>
<mat-tab label="SecondTab" >
<app-SecondTab></app-SecondTab>
</mat-tab>
<mat-tab label="ThirdTab" >
<app-ThirdTab></app-ThirdTab>
</mat-tab>
</mat-tab-group>
home.ts
selectedTabChanged(event: any){
if(event.index == 0){
this.Service.refreshTab();
}
if(event.index == 1){
this.Service.makeApiCall();
}
if(event.index == 2){
}
}
导航.html
<div>
<strong [routerLink]="['home/secondTab']" >
</strong>
</div>
app-routing.ts
const routes: Routes = [
Shell.childRoutes([
{ path: '', redirectTo: '/login', pathMatch: 'full' }, //works
{ path: 'home', component: HomeComponent }, //works
{ path: 'home/secondTab', component: SecondTabComponent } //loads HomeComponent
//OR
{ path: 'home/secondTab', component: HomeComponent, loadChildren: () =>
import ('./home/Second/Second.cmpnt').then(m => m.SecondTabComponent) }
])
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule],
providers: []
})
export class HomeRoutingModule { }
【问题讨论】:
标签: angular url-routing routerlink