1 回答
TA贡献1824条经验 获得超8个赞
我们可以使用ViewChildren获取所有跨度,通过放置一个模板引用,拿起span被选中的元素并将焦点设置到元素上。
所以我建议添加模板引用并在您的beforeEdit()传递中标记的索引(我们从 ngFor 获取它),所以当我们想要将焦点放在字段上时可以引用它:
<!-- add template reference in below span tag --->
<span [contentEditable]="underUpdateTagId==tag.id" ... #spans>
<!-- pass index as from ngFor iteration to beforeEdit() -->
<span *ngIf="underUpdateTagId!=tag.id" class="edit text-info" (click)="beforeEdit(tag, i)">
<!-- more code --->
在我们引用的组件中spans,模板引用。当点击时指定传递索引的跨度应该被关注:
@ViewChildren("spans") spans: QueryList<ElementRef>;
underUpdateTagId = null;
beforeEdit(tag, index) {
this.underUpdateTagId = tag.id;
// wait a tick
setTimeout(() => {
this.spans.toArray()[index].nativeElement.focus();
});
}
PS,这将焦点设置在开头,您可能希望它在结尾,如果是这种情况,也许这个问题可以帮助您:Use JavaScript to place cursor at end of text in text input element
添加回答
举报