单选按钮值类型元素上不存在

时间:2018-02-09 07:27:04

标签: angular typescript visual-studio-code

您好我正在尝试从我正在处理的Angular项目中的组件上的几个单选按钮中获取值。如果我使用相同的违规代码..

inline int fast_log2(register double x)
{ 
    return (reinterpret_cast<uint64_t&>(x) >> 52) - 1023;
};

...在控制台日志的if语句中,它不会抛出错误。此外,当我重新加载vs代码时,有时也不会抛出错误,并且它可以正常工作。

所以有人能看出我为什么会收到这个错误吗?谢谢你的帮助。如果您需要更多信息,请与我们联系。

this.format = document.querySelector('input[name="case"]:checked').value;

这是指令:

'file:////src/app/input-format2.directive.ts'
severity: 'Error'
message: 'Property 'value' does not exist on type 'Element'.'
at: '15,72'
source: 'ts'
code: '2339'

和html:

import { Directive, ElementRef, HostListener, Input } from '@angular/core';

@Directive({
  selector: '[appInputFormat2]'
})
export class InputFormat2Directive {
  // tslint:disable-next-line:no-input-rename
  @Input('appInputFormat2') format;

  constructor(private el: ElementRef) {}

  @HostListener('blur')
  onBlur() {
    const value: string = this.el.nativeElement.value;
    this.format = document.querySelector('input[name="case"]:checked').value;
    if (this.format === 'lowercase') {
      this.el.nativeElement.value = value.toLowerCase();
    } else {
      this.el.nativeElement.value = value.toUpperCase();
    }
  }
}

2 个答案:

答案 0 :(得分:2)

它是打字稿错误。默认情况下,document.querySelector返回没有输入值的Element实例。

你必须&#34;演员&#34;它:

this.format = (<HTMLInputElement>document.querySelector('input[name="case"]:checked')).value;

答案 1 :(得分:2)

使用document.querySelector时,如果未指定目标元素的类型,则typescript默认将其视为Element

您可以通过以下方式指定类型:

this.format = (document.querySelector('input[name="case"]:checked') as HTMLInputElement).value;