我有一个组件,其中包含p
元素。其onClick
事件将将其更改为textarea
,以便用户可以编辑数据。我的问题是:如何在角度2中获得dom元素
- 我如何才能把重点放在textarea上?
- 如何才能触及元素,以便我可以在其上应用.focus()?
- 我可以避免使用document.getElemenntById()吗?
我曾尝试使用 “ElementRef” 和 “@ViewChild()”,然而我似乎失去了一些东西:
// ------ THE CLASS
@ViewChild('tasknoteId') taskNoteRef:ElementRef;
noteEditMode: boolean = false;
get isShowNote(){
return !this.noteEditMode && this.todo.note ? true : false;
}
taskNote: string;
toggleNoteEditMode() {
this.noteEditMode = !this.noteEditMode;
this.renderer.invokeElementMethod(this.taskNoteRef.nativeElement,'focus');
}
// ------ THE COMPONENT
<span class="the-insert">
<form [hidden]="!noteEditMode && todo.note">
<textarea #tasknoteId id="tasknote"
name="tasknote"
[(ngModel)]="todo.note"
placeholder="{{ notePlaceholder }}"
style="background-color:pink"
(blur)="updateNote()" (click)="toggleNoteEditMode()"
[autofocus]="noteEditMode"
[innerHTML]="todo.note">
</textarea>
</form>
</span>
参见http://stackoverflow.com/questions/34522306/angular-2-focus-on-newly-added-input-element –