Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度事件处理,正确的实践使用模糊和点击相同的方法?_Javascript_Angular - Fatal编程技术网

Javascript 角度事件处理,正确的实践使用模糊和点击相同的方法?

Javascript 角度事件处理,正确的实践使用模糊和点击相同的方法?,javascript,angular,Javascript,Angular,这可能是一个令人困惑的问题,我在Angular中有一个验证方法,检查我是否填充了select,基本上是对值的一个小检查。现在我看到,如果我通过tab键在键盘上切换表单,(模糊)事件开始播放,如果我使用(单击)处理程序,则选中鼠标单击事件 因此,我想向社区核实这是否是一种正确的做法,如果不是,那么,如果我同时使用事件并对它们调用相同的方法,那么更好的方法是什么 请在下面找到代码示例 下面的代码在单击和模糊时执行,然后尝试检查值,如果值不存在,则显示contractValidationMessage

这可能是一个令人困惑的问题,我在Angular中有一个验证方法,检查我是否填充了select,基本上是对值的一个小检查。现在我看到,如果我通过tab键在键盘上切换表单,(模糊)事件开始播放,如果我使用(单击)处理程序,则选中鼠标单击事件

因此,我想向社区核实这是否是一种正确的做法,如果不是,那么,如果我同时使用事件并对它们调用相同的方法,那么更好的方法是什么

请在下面找到代码示例

下面的代码在单击和模糊时执行,然后尝试检查值,如果值不存在,则显示contractValidationMessage并显示一些错误消息,反之亦然

<select
                      class="form-control dropdown ng-pristine ng-valid ng-touched"
                      [(ngModel)]="clientModel.contract.signedBy" #contractSignedBy
                      (blur) = 'validateContractSignature(contractSignedBy)'
                      (click) = 'validateContractSignature(contractSignedBy)'
                      >
                      <option hidden value="" disabled selected>Singed by</option>
                        <option *ngFor="let user of userRoles">{{user}}</option>
                    </select>
                    <div class="validation-msg">{{contractValidationMessage}}</div>
            </div>

我知道标准验证器将在您键入时运行。它们甚至会在您键入任何内容之前运行,因此在您键入任何内容之前,表单常常充满了错误。通常,您不需要像以前那样使用模糊:

(blur) = 'validateContractSignature(contractSignedBy)'
在您的情况下,看起来您只测试了一个必需的。Angular对此有一个标准验证器

<select required></select>

看看:


如果您想要更多地控制表单,那么应该签出反应表单,而不是模板驱动的表单

感谢insight@jens,我将尝试实现相同的向上投票:)
<select required></select>