Ionic/Angular:有没有一种方法可以从选项卡内部触发ionViewWill/DidEnter并转到页面外部



我正试图触发一个事件,从路由模块之外的页面返回到我的选项卡页面。

2。我试过:

从两个页面使用@ion/angular NavController:从标签页:

this.navCtrl.navigateForward(['/store-name-keywords'], {

再次从另一页

this.navCtrl.navigateForward(['/tabs/storesearch'], {
queryParams: { keyword: this.storeNameKeyword, city: city.cityName },
relativeTo: this.route
});

3。这是我的标签路由第一个应用程序路由,然后标签路由的代码

{
path: 'storesearch',
loadChildren: () =>
import('./pages/store-search/store-search.module').then(
m => m.StoreSearchPageModule
)
},
{
path: 'store-search-results',
loadChildren: () =>
import('./pages/store-search-results/store-search-results.module').then(
m => m.StoreSearchResultsPageModule
)
},
{
path: 'store-search-results/:keyword/:city',
loadChildren: () =>
import('./pages/store-search-results/store-search-results.module').then(
m => m.StoreSearchResultsPageModule
)
},
{
path: 'store-name-keywords',
loadChildren: () =>
import('./pages/store-name-keywords/store-name-keywords.module').then(
m => m.StoreNameKeywordsPageModule
)
},
{
path: 'select-prefecture',
loadChildren: () =>
import('./pages/select-prefecture/select-prefecture.module').then(
m => m.SelectPrefecturePageModule
)
},

选项卡路由所有路由:

const routes: Routes = [
{
path: 'tabs',
component: TabsPage,
children: [
{
path: 'home',
children: [
{
path: '',
loadChildren: () =>
import('../pages/home/home.module').then(m => m.HomePageModule)
}
]
},
{
path: 'ec',
children: [
{
path: '',
loadChildren: () =>
import('../pages/ec/ec.module').then(m => m.ECPageModule)
}
]
},
{
path: 'mypage',
children: [
{
path: '',
loadChildren: () =>
import('../pages/mypage/mypage.module').then(
m => m.MyPagePageModule
)
}
]
},
{
path: 'storesearch',
children: [
{
path: '',
loadChildren: () =>
import('../pages/store-search/store-search.module').then(
m => m.StoreSearchPageModule
)
}
]
},
{
path: 'storesearch/:keyword',
children: [
{
path: '',
loadChildren: () =>
import('../pages/store-search/store-search.module').then(
m => m.StoreSearchPageModule
)
}
]
},
{
path: 'storesearch/:keyword/:city',
children: [
{
path: '',
loadChildren: () =>
import('../pages/store-search/store-search.module').then(
m => m.StoreSearchPageModule
)
}
]
},
{
path: 'storesearch/store-search-results',
loadChildren: () =>
import(
'../pages/store-search-results/store-search-results.module'
).then(m => m.StoreSearchResultsPageModule)
},
{
path: 'article',
children: [
{
path: '',
loadChildren: () =>
import('../pages/article/article.module').then(
m => m.ArticlePageModule
)
}
]
},
{
path: 'qrcode',
children: [
{
path: '',
loadChildren: () =>
import('../pages/qrcode/qrcode.module').then(
m => m.QRCodePageModule
)
}
]
},
{
path: 'coupon',
children: [
{
path: '',
loadChildren: () =>
import('../pages/coupon/coupon.module').then(
m => m.CouponPageModule
)
}
]
},
{
path: '',
redirectTo: '/tabs/home',
pathMatch: 'full'
}
]
},
{
path: '',
redirectTo: '/tabs/home',
pathMatch: 'full'
}
];

提前感谢您的帮助!

我发现,通过订阅Angular的ActivatedRoute的url:,无论你在路线输入中来自什么,你都可以触发输入

import { ActivatedRoute } from '@angular/router';
private activatedRoute: ActivatedRoute,
this.activatedRoute.url.subscribe(obs => {
// Can call a method for reentering view here
this.enteredStoreSearchPage();
});

我肯定是从另一个答案中得到的,但为了以防万一这对任何人都有帮助,我想把它发布出来。没有什么比回答你自己的问题更好的了:(

最新更新