键盘解除时,TextView不会失去焦点

时间:2017-05-29 14:31:30

标签: android textview nativescript angular2-nativescript

仅在Android设备上发生此行为

<TextView [(ngModel)]="textData" updateTextTrigger="focusLost" (ngModelChange)="updateText()"></TextView>

由于我使用updateTextTrigger作为focusLost,模型不会更新,因为TextView始终保持焦点单位我们将焦点切换到另一个元素,这是我无法做到的因为那是页面上唯一的输入元素。

这是Android设备上的预期行为以及如何处理这个问题吗?

这是NativeScript的问题吗?应该创建一个问题吗?

1 个答案:

答案 0 :(得分:1)

我正在使用此处显示的略微调整版本的去抖管:https://github.com/numsu/angular2-debounce/blob/master/src/debounce.directive.ts

上面链接中的代码也更新了模型,这是我不需要的。所以选择你的毒药。我的代码是:

import { Input, Output } from "@angular/core";
import { EventEmitter, ElementRef, OnInit, Directive } from "@angular/core";
import { Observable } from "rxjs";

@Directive({
  selector: '[debounce]'
})
export class DebounceDirective implements OnInit {
  @Input() debounceDelay: number = 700;
  @Input() debounceFromEvent: string = "tap";
  @Output() debounceFunction: EventEmitter<any> = new EventEmitter();

  constructor(private elementRef: ElementRef) {
  }

  ngOnInit(): void {
    const eventStream = Observable
        .fromEvent(this.elementRef.nativeElement, this.debounceFromEvent)
        .debounceTime(this.debounceDelay);

    eventStream.subscribe(input => this.debounceFunction.emit(input));
  }
}

你可以在Label或你想要的任何输入上使用它:

<Label debounce debounceDelay="700" (debounceFunction)="saveChanges()" (tap)="updateStock(selectedArticle.article, 1)" text="Update"></Label>