我正在使用离子3角度和构建Web应用程序 . 我有一个要求是一个标签组件,第一个标签显示一个列表 . 单击每个列表项会创建一个新选项卡并显示一些内容 .
我实现它的方式是:
<ion-tabs #myTabs tabsPlacement="top" tabsLayout="icon-end">
<ion-tab *ngFor="let tb of core.dynamicTabs" [root]="tb.pageName" tabTitle="{{tb.tabTitle}}" tabIcon="close" (ionSelect)="onTabActive($event)"></ion-tab>
</ion-tabs>
我保持一个共享数组来存储标签相关的数据,如
@Injectable()
export class CoreStructureProvider {
dynamicTabs: any[];
constructor(public http: Http) {
this.dynamicTabs = [{ "pageName": MyListPage, "tabTitle": rw.name, "optyId": rw.OptyId }];
}
}
因此,从第一个选项卡的页面,创建新选项卡的代码是:
createTab(rw){
this.core.dynamicTabs.push({ "pageName": EditOptyPage, "tabTitle": rw.name, "optyId": rw.OptyId });
(this.navCtrl.parent).select(1)
}
除了标签选择外,一切都很好 . 只是为了简化问题我将值硬编码为1.因此理想情况下,每次调用createTab时都应该选择第二个选项卡 .
但这是我所看到的行为:当你第一次来时:只有一个显示列表的标签 . 单击列表中的一个项目,将创建一个新选项卡 . 但是,这不会成为活动标签 .
现在再次单击列表中的任何其他链接,这一次从现在起第二个选项卡变为活动状态 .
所以我不确定为什么第一次这不会触发?
1 回答
根据对离子论坛的一些研究,人们表明设置标签的摘要存在问题 . 因此,您必须在将来异步调用您的方法
setTimeout(()={(this.navCtrl.parent).select(1)},100);
100只是我选择的随机数 .