无法在typescript中强制转换HTMLSelectElement

无法在typescript中强制转换HTMLSelectElement,html,typescript,angular5,Html,Typescript,Angular5,我用的是角5。在.ts文件中,当我尝试将我的元素类型转换为HTMLSelectElement时,它会抛出一些错误。我检查了文档,但值选项在HTMLSelectElement中可用。我不知道我做错了什么 .ts文件: 内部get_部门职能: var selected_box = <HTMLSelectElement(document.getElementById('departments')).value; var selected\u box=您应该将断言放在括号内: var selec

我用的是角5。在.ts文件中,当我尝试将我的元素类型转换为HTMLSelectElement时,它会抛出一些错误。我检查了文档,但值选项在HTMLSelectElement中可用。我不知道我做错了什么

.ts文件:

内部get_部门职能:

var selected_box = <HTMLSelectElement(document.getElementById('departments')).value;

var selected\u box=您应该将断言放在括号内:

var selected_box = (<HTMLSelectElement>document.getElementById('departments')).value;
// OR
var selected_box = (document.getElementById('departments') as HTMLSelectElement).value;
var selected_box=(document.getElementById('departments')).value;
//或
var selected_box=(document.getElementById('departments')作为HTMLSelectElement.value;
您只需这样做

 <select class="form-control" (change)="get_department($event);">
        <option>Select</option>
        <option> PRM </option>
        <option> CRM </option>
        <option> CRDX </option>
      </select> 
HTML

您不应直接访问文档

比如
document.getElementById('departments').value

  • 它阻止使用Angular Universal部署项目
  • 这反过来又使得项目的SEO优化变得不可能
  • 另外,角度通用的所有其他好处都失去了
  •  <select class="form-control" (change)="get_department($event);">
            <option>Select</option>
            <option> PRM </option>
            <option> CRM </option>
            <option> CRDX </option>
          </select> 
    
    get_department(event){ var selected_box = event.target.vlue;  }
    
    <select id="departments" class="form-control" (change)="get_department($event)">
      <option value="">Select</option>
      <option value="prm">PRM</option>
      <option value="crm">CRM</option>
      <option value="crdx">CRDX</option>
    </select>
    
    // Type assertion happens here
    get_department(event: HTMLSelectElement) {
      var selected_box = event.target.value;
    
      console.log(selected_box);
    }