角6,@ViewChild,* ngIf,在输入元素隐藏之前获取输入元素值

时间:2019-01-17 07:40:56

标签: angular

当元素显示为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()中工作。

0 个答案:

没有答案