Ayd*_*hew 11 ionic-framework angular
我有一个Angular 6延迟加载选项卡模板,可以正常工作.主页面有一个路由器插座,标签有二级路由器插座.但是,我无法在主菜单中创建显示标签页的routerLink.
此routerLink仅在标签页上尚未显示时才有效.例如
正确链接到:tabs /(about:about)
链接到标签页
如果已经在主页选项卡上(并单击链接),则最终的URL为:
/tabs/(about:about//home:home)
Run Code Online (Sandbox Code Playgroud)
如何创建始终链接到以下内容的routerLink?
/tabs/(about:about)
Run Code Online (Sandbox Code Playgroud)
我对这个打字稿有同样的行为:
this.router.navigate(['/tabs', { outlets: { about: ['about']}}]);
Run Code Online (Sandbox Code Playgroud)
但是,这个打字稿正常工作:
this.router.navigateByUrl('/tabs/(about:about)');
Run Code Online (Sandbox Code Playgroud)
app.component.html
<ion-app>
<nav>
<a [routerLink]="['/tabs', { outlets: { about: 'about' } }]">
This link only works if NOT already on tab page.
</a>
<ion-button (click)="navigateByUrl()">This always works!</ion-button>
</nav>
<router-outlet></router-outlet>
</ion-app>
Run Code Online (Sandbox Code Playgroud)
APP-routing.module.ts
import { NgModule } from '@angular/core';
import { Routes, RouterModule } from '@angular/router';
const routes: Routes = [
{ path: '', loadChildren: './pages/tabs/tabs.module#TabsPageModule' },
{ path: 'test', loadChildren: './pages/test/test.module#TestPageModule' }
];
@NgModule({
imports: [RouterModule.forRoot(routes, { enableTracing: true } )],
exports: [RouterModule]
})
export class AppRoutingModule {}
Run Code Online (Sandbox Code Playgroud)
tabs.router.module.ts
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { TabsPage } from './tabs.page';
import { HomePage } from '../home/home.page';
import { AboutPage } from '../about/about.page';
import { ContactPage } from '../contact/contact.page';
const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'home',
outlet: 'home',
component: HomePage
},
{
path: 'about',
outlet: 'about',
component: AboutPage
},
{
path: 'contact',
outlet: 'contact',
component: ContactPage
}
]
},
{
path: '',
redirectTo: '/tabs/(home:home)',
pathMatch: 'full'
}
];
@NgModule({
imports: [RouterModule.forChild(routes)],
exports: [RouterModule]
})
export class TabsPageRoutingModule {}
Run Code Online (Sandbox Code Playgroud)
在您的index.html 中,您应该添加以下行。
<base href="/">
Run Code Online (Sandbox Code Playgroud)
根据您的根 URL,heref 部分可能具有不同的值。
现在在您的路由配置中编写路由配置,如下所示。
const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'home',
outlet: 'home',
component: HomePage
},
{
path: '',
redirectTo: 'home',
pathMatch: 'full'
},
{
path: 'about',
outlet: 'about',
component: AboutPage
},
{
path: 'contact',
outlet: 'contact',
component: ContactPage
}
]
},
{
path: '',
redirectTo: 'tabs',
pathMatch: 'full'
}
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4713 次 |
| 最近记录: |