Я нашел решение в основном на основе информации, которую я получил из этого вопроса. Все было немного по-другому, потому что мое приложение использует <page-router-outlet>
вместо <router-outlet>
и из-за общей структуры приложения.
В шаблоне компонента вкладок я добавил идентификатор в нижнюю панель навигации, чтобы он мог быть ссылаясь на
<BottomNavigation id="bnav">
в компоненте игроков, я добавил следующую функцию:
toTeam( event: any ) {
console.log("Team ID is: " + event.object.teamId);
// Get the topmost frame so we can get the 'bnav' view from it later
const topmostFrame: Frame = Frame.topmost();
// Navigate places in the outlets
this.re.navigate(
[
{
outlets: {
teamTab: ["team", event.object.teamId],
playerTab: ["players"],
}
}
], { relativeTo: this.activeRoute.parent });
// Get the tabview object from the page and switch it to show the teams tab
let bNav:TabView = <TabView>topmostFrame.page.getViewById("bnav");
bNav.selectedIndex = 1;
}
<page-router-outlet>
означает, что я не могу просто импортировать страницу и использовать this.page.getViewById("bnav")
, потому что страница, которая компонент игроков, содержащийся внутри, не включает <BottomNavigation>
. Получение самого верхнего фрейма позволило мне получить страницу, содержащую то, что мне нужно.
Все это отлично работает в моем приложении.