关闭键盘时 TextView 不会失去焦点
TextView doesn't lose focus when the keyboard is dismissed
此行为仅发生在 Android
台设备上
<TextView [(ngModel)]="textData" updateTextTrigger="focusLost" (ngModelChange)="updateText()"></TextView>
由于我将 updateTextTrigger
用作 focusLost
,模型不会更新,因为 TextView
始终保持焦点单元,我们将焦点切换到另一个元素,我可以'不要这样做,因为这是页面上唯一的输入元素。
这是 Android
设备上的预期行为吗?如何处理?
或
这是 NativeScript
的问题吗?应该作为问题创建吗?
我使用的是此处显示的去抖动管道的略微调整版本:https://github.com/numsu/angular2-debounce/blob/master/src/debounce.directive.ts
上面 link 中的代码也更新了模型,我不需要这样做。所以选择你的毒药。我的代码是:
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>
此行为仅发生在 Android
台设备上
<TextView [(ngModel)]="textData" updateTextTrigger="focusLost" (ngModelChange)="updateText()"></TextView>
由于我将 updateTextTrigger
用作 focusLost
,模型不会更新,因为 TextView
始终保持焦点单元,我们将焦点切换到另一个元素,我可以'不要这样做,因为这是页面上唯一的输入元素。
这是 Android
设备上的预期行为吗?如何处理?
或
这是 NativeScript
的问题吗?应该作为问题创建吗?
我使用的是此处显示的去抖动管道的略微调整版本:https://github.com/numsu/angular2-debounce/blob/master/src/debounce.directive.ts
上面 link 中的代码也更新了模型,我不需要这样做。所以选择你的毒药。我的代码是:
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>