【发布时间】:2017-06-02 01:25:50
【问题描述】:
我有一个分页组件。
html: 第一页
<button md-mini-fab (click)="previous()" [disabled]="isFirstpageButtonDisabled" style="margin:0 0.5rem">
<md-icon>chevron_left</md-icon>
</button>
<input #input type="text" (keyup.enter)="goToPage(input.value)" [(value)]="pageIndex" style="margin:0 0.5rem; width: 40px;">
/ {{totalPages}}
<button md-mini-fab (click)="next()" [disabled]="isLastpageButtonDisabled" style="margin:0 0.5rem">
<md-icon>chevron_right</md-icon>
</button>
<button md-mini-fab (click)="goToPage(totalPages)" [disabled]="isLastpageButtonDisabled" style="margin:0 0.5rem">
<md-icon>last_page</md-icon>
</button>
当用户在输入框中输入无效的数字/字符时,我会显示一条错误消息。我还需要将输入框值恢复为之前有效的数字。
checkPageIndex() {
this.validpageIndex = true;
if (this.pageIndex < 1 || this.pageIndex > this.totalPages || isNaN(this.pageIndex)) {
this.validpageIndex = false;
this.toaster.showToaster('Please select a page between 1 and ' + this.totalPages + '.');
return;
}
}
我试图通过保存前一页索引并在有效检查失败时分配该值来实现这一点:
this.pageIndex = this.previousPageIndex;
此值已在控制台日志中正确分配,但输入文本框仍显示无效输入。我怎样才能解决这个问题?
【问题讨论】:
-
你有哪个 ChangeDetectionStrategy ?也许你跑在角度之外?
-
不确定您所说的 ChangeDetectionStrategy 是什么意思。每次输入是有效数字时,我都会设置 this.previousPageIndex = this.pageIndex;我保存了之前的有效输入,以便在输入无效输入时可以再次使用它。
-
为了进一步澄清,我在输入控件和组件之间使用了一个简单的变量绑定,例如 typescript 中的 pageIndex: number,然后绑定到输入控件的值。
-
如果您每次更改 pageIndex 时都保存 previousPageIndex,然后在验证失败时设置 pageIndex = previousPageIndex 就像您写的那样,您的方法将起作用。请参阅下面的答案,例如工作 plunkr
标签: angular pagination grid