仅在Android
设备上发生此行为
<TextView [(ngModel)]="textData" updateTextTrigger="focusLost" (ngModelChange)="updateText()"></TextView>
由于我使用updateTextTrigger
作为focusLost
,模型不会更新,因为TextView
始终保持焦点单位我们将焦点切换到另一个元素,这是我无法做到的因为那是页面上唯一的输入元素。
这是Android
设备上的预期行为以及如何处理这个问题吗?
或
这是NativeScript
的问题吗?应该创建一个问题吗?
答案 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>