Ionic 4 Tabs无法完全呈现

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ionic 4 Tabs无法完全呈现相关的知识,希望对你有一定的参考价值。

我有这个奇怪的问题,我已经开始了一个带有Tabs和角度路由的新应用程序。我添加了一个新的登录页面,登录后,用户被重定向到标签页。问题是在重定向之后,有时只渲染一个选项卡,有时会渲染两个选项卡。如果我刷新页面或直接转到页面,则会显示所有3个选项卡。如果我再次在“选项卡”页面上启动应用程序,则会显示所有3个选项卡。

AppRoutingModule:

const routes: Routes = [
{path: 'login', loadChildren: './login/login.module#LoginPageModule'},
{path: 'home', loadChildren: './tabs/tabs.module#TabsPageModule'},
{path: '', redirectTo: '/login', pathMatch: 'full'}];

TabsPageRoutingModule:

const routes: Routes = [
{
    path: '',
    component: TabsPage,
    children: [
        {
            path: 'home',
            outlet: 'home',
            component: HomePage
        },
        {
            path: 'about',
            outlet: 'about',
            component: AboutPage
        },
        {
            path: 'contact',
            outlet: 'contact',
            component: ContactPage
        }
    ]
},
{
    path: '',
    redirectTo: '/tabs/(home:home)',
    pathMatch: 'full'
}];

LoginPage:

export class LoginPage implements OnInit {
responseData: any;
userData = {'email': '', 'password': ''};
constructor(public navCtrl: NavController, public apiService: ApiService, public toastCtrl: ToastController) {
}
login() {
    this.apiService.login(this.userData).then((result) => {
        this.responseData = result;
        if (this.responseData.token) {
            console.log(this.responseData);
            localStorage.setItem('token', this.responseData.token);
            this.navCtrl.goRoot('/home');
        } else {
            console.log('User already exists');
        }
    }, (err) => {
        // Error log
        console.log(err);
    });
}
ngOnInit() {

}}

有任何想法吗?谢谢!

答案

截至今天,即2018年11月1日,Ionic 4(4.0.0-beta.15)中的标签已经完全改变。

https://github.com/ionic-team/ionic/blob/master/CHANGELOG.md#400-beta15-2018-11-01

基本上,他们已将选项卡更新为按钮的标签栏,可用于加载离子路由器插座,离子内容或离子导航组件。

该重构的其他一些好处包括:

  • 现在可以写成独立的标签栏(没有附加标签)
  • 使用导航组件或纯内容元素
  • 与shadow DOM一起使用,可以轻松自定义Tab Bar
  • 完全控制选项卡栏内的元素
  • 与其他具有不同渲染元素节点方式的框架很好地集成
另一答案

尝试改变

this.navCtrl.goRoot('/home');

this.navCtrl.goRoot('/tabs'); to 
另一答案

步骤1:

const routes: Routes = [
{
    path: 'tabs',
    component: TabsPage,
    children: [
        {
            path: 'home',
            outlet: 'home',
            component: HomePage
        },
        {
            path: 'about',
            outlet: 'about',
            component: AboutPage
        },
        {
            path: 'contact',
            outlet: 'contact',
            component: ContactPage
        }
    ]
},
{
    path: '',
    redirectTo: '/home/tabs/(home:home)',
    pathMatch: 'full'
}];

第2步:

this.navCtrl.goRoot('/home');
另一答案

我有同样的问题。

在查看了我的html后,我意识到我遇到了问题,在“离子标签”中输入“标签”为空,这导致了问题,错误:

<ion-tab label="" icon="medkit" href="/(entidades:entidades)">
 <ion-router-outlet name="entidades">
 </ion-router-outlet>
</ion-tab>

我的解决方案:

<ion-tab label="The label of tab" icon="medkit" href="/(entidades:entidades)">
 <ion-router-outlet name="entidades">
 </ion-router-outlet>
</ion-tab>

我希望它对你有所帮助

以上是关于Ionic 4 Tabs无法完全呈现的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 tabs.router.module 中的路由在 Ionic 4 中触发 ionViewWillLeave

Ionic 选项卡无法在 Android 上正确呈现?

Ionic Tabs

Ionic:如何实现登录页面跳转至Tabs页面

ionic的tabs

带有边距和页面转换器的片段内的 ViewPager 无法正确呈现