我有一个名为TransactionModule的模块,其中包含以下路由:
transaction-routeting.module.ts
export const routes: Route[] = [
{
path: 'transaction',
component: TransactionComponent,
canActivate: [AuthGuard],
children: [
{
path: 'deposit',
component: DepositComponent,
outlet: 'depositTab'
},
{
path: 'skrill-deposit',
component: SkrillDepositComponent,
outlet: 'depositTab'
},
{
path: 'withdrawal',
component: WithdrawalComponent,
outlet: 'withdrawalTab'
}
]
},
我的转换组件的作用是它包含我的选项卡,其模板如下所示:
<ActionBar title="ActionBar title">
<NavigationButton android.systemIcon="ic_menu_back" text="Back To Dashboard" (tap)="goBack()"></NavigationButton>
</ActionBar>
<TabView androidTabsPosition="bottom" selectedIndex="0">
<page-router-outlet *tabItem="{title: 'Deposit'}" name="depositTab" actionBarVisibility="never">
</page-router-outlet>
<page-router-outlet *tabItem="{title: 'Withdrawal'}" name="withdrawalTab" actionBarVisibility="never">
</page-router-outlet>
</TabView>
下面是组件的代码:
transaction.component.ts:
export class TransactionComponent implements OnInit {
constructor(private routerExtensions: RouterExtensions,
private activatedRoute: ActivatedRoute) { }
ngOnInit() {
this.routerExtensions.navigate(
[{ outlets: { depositTab: ['deposit'], withdrawalTab: ['withdrawal'] } }],
{ relativeTo: this.activatedRoute }
);
}
goBack() {
console.log(this.routerExtensions.canGoBack());
this.routerExtensions.back();
}
}
现在,我想做的是,当单击操作栏的后退按钮时,它应该返回到仪表板(/dashboard,这是进入交易之前的发起路由(。但是,它不起作用。
当我尝试记录这个.routerExtensions.canGoBack((时,它返回false。为什么会这样?为什么我无法导航回仪表板?
我遇到了同样的问题,我能够通过使用带有BackNavigationOptions参数的RouterExtension后退函数来解决,就像这样。
this.router.back({
outlets: null,
relativeTo: this.active,
});
您必须通过在 relativeTo 属性上指定值来指定应从哪个 ActiveRoute 开始导航回来。希望这是有道理的。:)
尝试添加 transaction.component.ts:
get canGoBack() {
return this.router.canGoBack();
}
在.html文件中:
<NavigationButton
android.systemIcon="ic_menu_back"
text="Back To Dashboard"
(tap)="onGoBack()" (tap)="goBack()">
</NavigationButton>