我有一个包含默认隐藏文本区域的组件:
<div class="action ui-g-2" (click)="toggleEditable()">edit</div>
<textarea [hidden]="!whyModel.inEdition" #myname id="textBox_{{whyModel.id}}" pInputTextarea focus="true" [(ngModel)]="whyModel.description"></textarea>
当我单击“编辑”div 时,我想显示文本区域并将焦点放在它上面:
@ViewChild('myname') input: ElementRef;
...
private toggleEditable(): void {
this.whyModel.toggleEditable();
this.input.nativeElement.focus();
}
“展示”部分有效,但焦点部分不起作用。我想念什么?
仅当更改检测运行时才会更新绑定,这通常是在事件处理程序完成之后。这对于您的用例来说已经太晚了,因为事件处理程序本身已经依赖于更改检测的效果。
您可以通过调用立即(同步)强制执行更改检测detectChanges()
constructor(private cdRef:ChangeDetectorRef) {}
@ViewChild('myname') input: ElementRef;
...
private toggleEditable(): void {
this.whyModel.toggleEditable();
this.cdRef.detectChanges();
this.input.nativeElement.focus();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)