Ionic 2+,iOS 唯一问题:由于页面加载而重置插件

Posted

技术标签:

【中文标题】Ionic 2+,iOS 唯一问题:由于页面加载而重置插件【英文标题】:Ionic 2+, iOS only issue: resetting plugins due to page load 【发布时间】:2017-06-13 19:49:11 【问题描述】:

我的 ionic 3 应用程序中有一个非常奇怪的问题。我正在向应用程序添加一项功能,该功能涉及使用 Angular 2+ 表单和验证器的多步骤输入过程。在网络、android 和较旧的 ios 设备 (iOS 9) 上一切正常。在 iOS 10 上,我在提交第一个表单步骤后得到以下信息:

Resetting plugins due to page load

然后应用程序重新启动。主要触发点似乎是在第一步之后设置一个布尔值,它隐藏了第一个表单并显示了第二个。注释掉一行可以防止问题发生。

我可以做些什么来找到有关为什么仅在 iOS 10 中引发此错误的更多信息?例如,额外的日志记录?

HTML

<ion-card>
    <ion-card-header>
        <ion-icon name="person-add"></ion-icon> Sign Up!
    </ion-card-header>

    <!--Step 1 - confirm user-->
    <ion-list no-lines *ngIf="!hasConfirmedStep1">
      <form [formGroup]="formStepOne">

       <...SNIP...>

        <ion-item>
          <button ion-button icon-right float-right small (click)="checkUser()" [disabled]="!formStepOne.valid">
            Next
            <ion-icon name="arrow-round-forward"></ion-icon>      
          </button>
        </ion-item>
      </form>
    </ion-list>

    <!--Step 2...Create Account-->
    <ion-list no-lines *ngIf="hasConfirmedStep1 && !hasConfirmedStep2">
      <form [formGroup]="formStepTwo">


        <!--Email/Confirm email-->
        <div formGroupName="validEmail">

        <...SNIP...>

        </div>
        <ion-item>
          <button ion-button icon-right float-right small (click)="createUser()" [disabled]="!formStepTwo.valid">
            Next
            <ion-icon name="arrow-round-forward"></ion-icon>      
          </button>
        </ion-item>
      </form>

    </ion-list>
</ion-card>

TS

async checkUser() 

    this.hasSubmittedStep1 = true;
    this.errorMessage = this.successMessage = "";

    if (!this.formStepOne.valid) 
      this.loggingService.debug("Invalid signup form for Check User");
      this.errorMessage = "Please enter valid input.";
    
    else 
      this.loggingService.debug("Valid signup form for Check User.  Checking info...");

      //Confirm User


      this.successMessage = 'Confirmed!  Please Create Account.';
      this.hasConfirmedStep1 = true;
    
  

【问题讨论】:

【参考方案1】:

我不知道为什么,但在 iOS 10 上,问题似乎是隐藏了 html [formGroup] 标签。此页面构造函数使用formBuilder.group() 为这些表单实例化对象。也许 iOS 10 上的某些东西期望有与这些相关联的 HTML 表单?

我的解决方法是简单地重新构建页面结构,以便始终显示&lt;form&gt; 标签,但在其中我有一个&lt;div&gt;,我将*ngIf 放在上面以显示/隐藏内部视觉元素。奇怪,但似乎有效。

【讨论】:

哇,太好了,工作也很好,感谢您节省了很多时间:)

以上是关于Ionic 2+,iOS 唯一问题:由于页面加载而重置插件的主要内容,如果未能解决你的问题,请参考以下文章

点击推送通知后打开页面 Ionic 2 iOS

如何将 Mongoose 后端类连接到前端类(Ionic 与 Angular.io)

Cordova / Ionic iOS 应用程序在加载插件时挂在启动屏幕上

使用 Ionic 框架在登录/注销时清除历史记录并重新加载页面

如何将混合应用程序重定向到主页而不是 Ionic ios 应用程序中的教程页面?

如何在 ionic 2 中创建自定义加载页面