当从 ios 钥匙串加载 username/password 时,Ionic Angular 输入直到点击才会更新

Ionic Angular input not updating until click when username/password loaded from ios keychain

我在使用 ionic 3 时遇到了一个奇怪的问题。我在登录我的应用程序时为用户启用了 iOS 钥匙串。它会填充值,但仅在使用钥匙串后单击输入后才会填充。

我的输入:

<input 
  name="login_email" 
  id="user-text-field" 
  autocomplete="username" 
  type="email" 
  class="input-no-bottom-border" 
  placeholder="Email" 
  (change)="socialLoginProvider.loginEmail = $event.target.value" 
  [(ngModel)]="socialLoginProvider.loginEmail"
>

基本上,当他们点击键盘上的钥匙串按钮时,它会按预期进行,但是一旦他们 return 到应用程序,输入仍然是空白,直到用户点击其中一个然后它触发 (change)并更新允许用户登录的值。

Ionic 3 未检测到更改,这是一个已知错误,已在 v4 中修复。为了解决这个问题,我设置了一个函数来检测点击时的变化。我用了 ChangeDetectorRef.detectChanges()

(tap)="createDetector()"

detector;

detectChanges() {
  return setInterval(() => {
    this.changes.detectChanges();
  }, 500);
}

createDetector() {
  this.detector = this.detectChanges();
}

destroyDetector() {
  clearInterval(this.detector);
}

我在方法完成时使用 clearInterval 只是为了清理间隔,所以它不会 运行 持续。