У меня есть компонент, который имеет элемент p
. Его событие onClick
изменит его на 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>