从TypeScript设置输入元素的值

问题描述 投票:0回答:1

在我们的Angular应用中,我们使用Telerik的控件,如:

<kendo-recurrence-editor [start]="startDate" (valueChange)="onRecurrenceChange($event)">
</kendo-recurrence-editor>

如果有人更改了此控件的输入值,则可以正确调用onRecurrenceChange函数:

public onRecurrenceChange(e) {
  this.recurrence = e;  
  ...     
}

现在,我们要做的下一步是验证此控件内的输入元素。

例如,如果输入的值无效,我们将输入的值重置为:

public onRecurrenceChange(e) {
    ...
    var inputs = this.recurrenceEditorDiv.nativeElement.querySelectorAll("input");
    inputs[3].value = 1;
}

该值已正确重置,因此在功能上似乎可以正常工作,但是同时我们收到了JavaScript错误:ExpressionChangedAfterItHasBeenCheckedError

似乎根本原因是我们通过在事件处理程序中自己操纵DOM来设置此输入值。

我试图在setTimeout()中执行此操作,但这并不能解决问题。

所以我的问题是:我们可以通过哪种方式从TypeScript中操作DOM并更改输入元素的值,并使TypeScript保持快乐?

编辑:我创建了一个堆栈闪电,但是在这里我看不到Visual Studio中抛出的异常:https://stackblitz.com/edit/angular-x1wpld。如果您转到“每日”,并在“ x次出现之后”中输入999,它将重置为1。但是正如所说的,在Visual Studio中,我收到ExpressionChangedAfterItHasBeenCheckedError错误。

angular typescript dom
1个回答
0
投票

您尝试过吗?

public onRecurrenceChange(e) {
     setTimeout(() => {
       ...
       var inputs = this.recurrenceEditorDiv.nativeElement.querySelectorAll("input");
       inputs[3].value = 1;
     },
       0
     );
}

在某些情况下,我似乎使用了它。我不使用Scheduler组件。

我想是respective error for Kendo Angular Datepicker

© www.soinside.com 2019 - 2024. All rights reserved.