如何用打字稿函数调用替换html函数调用?

时间:2019-09-24 10:01:39

标签: html angular typescript

这是我的div在html内的样子:

<div class="form-group col">
  <label for="randomName" class="mb-1">Test</label>
  <ngb-timepicker id="randomName" name="start" [(ngModel)]="startTime"
                  [acSmallestTimeUnit]="this.smallestTimeUnit"
                  [acSmallestTimeUnitEnabled]="this.smallestTimeUnitEnabled" [spinners]="false"
                  #start="ngModel"></ngb-timepicker>
</div>

我在这里使用模板驱动的方法进行自定义验证。每当我更改另一个html元素的值时,我都想手动触发start元素的验证。我通过使用方法updateValueAndValidity()来做到这一点。像这样:

<select (change)="onChange(); start.control.updateValueAndValidity();" 
        id="random" class="form-control" #project name="project"
        [(ngModel)]="projectName" #project="ngModel" tabIndex="0" required>

问题是,我必须在onChange()之后调用start.control.updateValueAndValidity()。但是onChange()是异步的,因此为了在onChange()之后调用start.control.updateValueAndValidity(),我想在onChange()方法的末尾调用它,该方法是使用async和await用打字稿编写的。我想知道如何将start.control.updateValueAndValitiy()转换为打字稿代码,以便可以在其中调用它,但我真的不知道如何获取初始值。我尝试了多种操作,包括document.getElementByName()等,但没有任何效果。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是将start传递到onChange并在start.control.updateValueAndValidity()内调用onChange

<select (change)="onChange(start)" 
        id="random" class="form-control" #project name="project"
        [(ngModel)]="projectName" #project="ngModel" tabIndex="0" required>
onChange(start) {
   // some async await call

   start.control.updateValueAndValidity();
}