我有一个代码:
document.getElementById('loginInput').value = '123';
但在编译代码时我收到以下错误:
HTMLElement类型中不存在属性值。
我已声明var:value: string;
。
如何避免此错误?
谢谢。
答案 0 :(得分:33)
如果你想设置值,你可以在点击或某些事件触发的某些功能中执行相同的操作。
你也可以使用像{/ p>这样的局部变量使用ViewChild
获得价值
<input type='text' id='loginInput' #abc/>
并获得这样的价值
this.abc.nativeElement.value
好的,你必须使用angualr2的ngAfterViewInit
方法,就像这样
ngAfterViewInit(){
document.getElementById('loginInput').value = '123344565';
}
ngAfterViewInit
不会抛出任何错误,因为它会在模板加载后呈现
答案 1 :(得分:16)
(<HTMLInputElement>document.getElementById('loginInput')).value = '123';
Angular不能直接获取html元素,你需要通过将上面的泛型绑定到它来指定元素类型。
答案 2 :(得分:8)
一种不同的方法,即:您可以“以Angular方式”执行此操作并使用ngModel
并完全跳过document.getElementById('loginInput').value = '123';
。相反:
<input type="text" [(ngModel)]="username"/>
<input type="text" [(ngModel)]="password"/>
并在您的组件中提供以下值:
username: 'whatever'
password: 'whatever'
这将在导航到页面时预设用户名和密码。
答案 3 :(得分:0)
比较角度方式(通过ID设置/获取值):
//在HTML标签中
<button (click) ="setValue()">Set Value</button>
<input type="text" #userNameId />
//在组件.ts文件中
export class testUserClass {
@ViewChild('userNameId') userNameId: ElementRef;
ngAfterViewInit(){
console.log(this.userNameId.nativeElement.value );
}
setValue(){
this.userNameId.nativeElement.value = "Sample user Name";
}
}