Я создаю приложение Ionic, в котором я использую вкладки. Я хочу иметь возможность перемещаться с одной вкладки на другую с помощью класса компонентов typescript, прикрепленного к шаблону табуляции. Например, вкладка 2 должна быть активирована после запуска события на вкладке 1.
Моя вкладка хорошо загружается на вкладках, и все хорошо, пока я вручную нажимаю на вкладку, чтобы перемещаться, но попытка переключить контекст в коде позади была очень сложной.
В момент загрузки я могу активировать любую из активных вкладок, просто установив атрибут [selectedIndex] вкладки ion в значение атрибута в моем классе компонентов вкладок.
Шаблоны родительских вкладок - tab.html
<ion-tabs #tabParent [selectedIndex]="tabToShow">
<ion-tab tabTitle="Tab 1" [root]="tab2" [rootParams]="{parent : tabParent}"></ion-tab>
<ion-tab tabTitle="Tab 2" [root]="tab2" [rootParams]="{parent : tabParent}></ion-tab>
<ion-tab tabTitle="Tab 3" [root]="tab3" [rootParams]="{parent : tabParent}></ion-tab>
</ion-tabs>
Компонент - tab.ts
import {Page} from 'ionic-angular';
import {Tab1} from '../tab1/tab1.ts';
import {Tab2} from '../tab2/tab2.ts';
import {Tab3} from '../tab3/tab3.ts';
@Page({
templateUrl : 'build/pages/tab/tab.html'
})
export class Tab{
tab1: any;
tab2: any;
tab3: any;
tabToShow : number = 1;
ngOnInit(){
this.tab1 = Tab1;
this.tab2 = Tab2;
this.tab3 = Tab3;
}
}
В компоненте для первой вкладки (Tab1
) я могу получить ссылку на родительские вкладки с помощью [rootParams] = "{parent : tabParent}"
, и я могу получить доступ ко всем доступным свойствам, открываемым объектом tabs. Событие, сгенерированное в шаблоне tab1.html, вызывает вызов goToTab2()
. Таким образом, мне удалось установить SelectedIndex
в 1 (что я ожидаю, чтобы изменить активную вкладку на вторую вкладку). Но вкладка не меняется.
tab1.ts
import {Page, NavParams} from 'ionic-angular';
import {Tab2} from '../tab/tab2/tab2.ts'
@Page({
templateUrl : 'build/pages/tab/tab1/tab1.html'
})
export class Tab1{
parent : any;
constructor(nav : NavParams){
this.parent = nav.data;
}
goToTab2(event, value): void{
this.parent.parent.selectedIndex = 1;
console.log(this.parent.parent);
}
}
Мне нужна помощь, что я делаю неправильно?