角度模板三元或方法

时间:2018-03-12 08:18:00

标签: html angular typescript

我有一个基本的简单问题,我在网上找不到真正找到答案。我正在制作一个只有数字字段的反应形式,所以我做了:

<input type="number" formControlName="view" />

现在我只有我能写的数字字段,而且。 所以我的两个解决方案是:

三元:

(keydown)="$event.keyCode !== 188 ? $event.keyCode !== 190: $event.preventDefault()"

或方法:

private keypress(_event: any) {
    if (_event.keyCode === 188 || _event.keyCode === 190)
    {
        _event.preventDefault();
    }
}

在这些之间是否有我应该知道的表现? 与此问题相关:调用组件方法需要花费更多时间然后再进行三元组编写?

1 个答案:

答案 0 :(得分:1)

三元模板表达式和方法调用在AOT编译模式下将具有大致相同的性能影响,这在此处可以忽略不计,并且不是优化的主题。

if (authorization != null && authorization.startsWith("Basic")) {
        // Authorization: Basic base64credentials
        String base64Credentials = authorization.substring("Basic".length()).trim();
        String credentials = new String(Base64.getDecoder().decode(base64Credentials),
                Charset.forName("UTF-8"));
        // client/secret = clientId:secret
        final String[] values = credentials.split(":",2);

$event.keyCode !== 188 ? $event.keyCode !== 190: $event.preventDefault()

是不同的事情。

如果if (_event.keyCode === 188 || _event.keyCode === 190) { _event.preventDefault(); } ,则三元表达不会调用$event.preventDefault()

应该是:

$event.keyCode === 190

更简洁的方法是将实现细节移至($event.keyCode === 188 || $event.keyCode === 190) && $event.preventDefault() 方法。

另一个选择是使用纯管道,但在这种情况下它不会有任何性能优势,因为keypress每次都是新对象。