html - 从 Angular 模板获取字符串而不是预期数字并输入 native 元素的值

标签 html angular typescript

我有一个像这样在按下键时触发的事件。

value: number;
onKeyUp(event: KeyboardEvent) {
  this.value = this.input.nativeElement.value;
  console.log("typo", typeof (this.value));
}

出于某种原因,存储的值是字符串而不是数字。我试过使用这样的语法但无济于事。

this.value = this.input.nativeElement.value as number;

取而代之的是,我不得不使用过去的 JS hack,即像这样的一元加号运算符。

this.value = +this.input.nativeElement.value;

是否有更合适的方法来确保我的输入提供数字?还是我已经做对了?

标记可能没有提供有用的信息,但为了以防万一,这里提供了它。

<input #input
  value="{{value}}"
  (keyup)="onKeyUp($event)"
  (keydown.Tab)="onKeyUp($event)">

最佳答案

它写在 specvalue 将始终存储为字符串。因此,即使您将输入类型设置为数字,它也只会更新用户界面。但是字符串类型的值仍然相同。

我提取数据的方式与您不同。不确定您是否有任何理由这样做。我总是使用 ngModel指示。

基本上它是双向绑定(bind),如果你更新数据模型,它会更新 UI,反之亦然。这样您就不必像在问题上那样通过 ElementRef 手动获取值。它会自动为您完成。

app.component.html

<input type="number" [(ngModel)]="inputVal" (keyup)="onKeyUp($event)">

应用程序组件.ts

onKeyUp(event: KeyboardEvent) {    
  console.log(this.inputVal);
}

注意 HTML 代码中的 type="number"。当您这样设置时,inputVal 将作为一个数字 返回。我并没有真正检查源代码,但 Angular 可能会以某种方式自动解析它。

如果您不放置它,该值仍将保留为字符串

我为它准备了例子。请查看https://stackblitz.com/edit/angular-ngmodel-number

您只需在输入中键入内容并查看值和类型。

关于html - 从 Angular 模板获取字符串而不是预期数字并输入 native 元素的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55579035/

相关文章:

javascript - 如何在 html 中将错误消息居中?

javascript - 让按钮调用多个功能

typescript - TS 手册上的调用签名示例

typescript - 使用 TypeScript 装饰器扩展 ES6 类时扩展类型

javascript - 没有选中属性的复选框

html - "Crop"使用 CSS 的照片

angular - ng-template 中组件的 EventEmitter 被组件的不同实例捕获

arrays - Angular 2 中的数组初始化,Typescript

Angular ChangeDetectionStrategy.OnPush 与发出事件的子组件

maven - Spring boot、maven、AngularJS 2、 typescript 和实时重新加载