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 表单?
我的解决方法是简单地重新构建页面结构,以便始终显示<form>
标签,但在其中我有一个<div>
,我将*ngIf
放在上面以显示/隐藏内部视觉元素。奇怪,但似乎有效。
【讨论】:
哇,太好了,工作也很好,感谢您节省了很多时间:)以上是关于Ionic 2+,iOS 唯一问题:由于页面加载而重置插件的主要内容,如果未能解决你的问题,请参考以下文章
如何将 Mongoose 后端类连接到前端类(Ionic 与 Angular.io)
Cordova / Ionic iOS 应用程序在加载插件时挂在启动屏幕上
使用 Ionic 框架在登录/注销时清除历史记录并重新加载页面