【发布时间】:2016-12-21 01:08:25
【问题描述】:
我有一个包含<p> 元素的组件。这是(click) 事件将其更改为<textarea>。因此,用户可以编辑数据。我的问题是:
- 如何将焦点放在
textarea上? - 如何获取元素,以便在其上应用
.focus()? - 我可以避免使用
document.getElemenntById()吗?
我曾尝试使用“ElementRef”和“@ViewChild()”,但我似乎遗漏了一些东西:
app.component.ts
@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'
);
}
app.component.html
<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>
【问题讨论】: