当元素显示为show(* ngIf = true)时,set方法可以作为操作元素。
但是,当输入元素隐藏之前,我去获取输入元素的值,该值将返回给服务器。
例如:
html,设置#namePlaceholder
输入元素:
<input *ngIf="editNameActive" type="text" value="{{value}}" #namePlaceholder>
<div (click)="editName()"></div>
组件:
editNameActive
控件显示或隐藏输入元素。
editNameActive: boolean = false;
editName(){
this.editNameActive = this.editNameActive? false:true;
}
设置ElementRef
,显示元素时输入元素焦点。隐藏(不起作用)时获取输入元素值。
private namePlaceholder: ElementRef;
@ViewChild('namePlaceholder') set name(name: ElementRef){
this.namePlaceholder = name;
if(this.editNameActive) {
this.namePlaceholder.nativeElement.focus();
}else{
//nativeElement' is undefined
console.log(this.namePlaceholder.nativeElement.value);
}
}
我还尝试在状态更改之前在editName()
中获取价值:
editName(){
if(this.editNameActive){
console.log(this.namePlaceholder.nativeElement.value);
this.editNameActive = false;
}
}
但是namePlaceholder
仅在name()
中工作。