我有一个基本的简单问题,我在网上找不到真正找到答案。我正在制作一个只有数字字段的反应形式,所以我做了:
<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();
}
}
在这些之间是否有我应该知道的表现? 与此问题相关:调用组件方法需要花费更多时间然后再进行三元组编写?
答案 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
每次都是新对象。