我有一個組件,其中包含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 –