【发布时间】:2019-06-30 15:05:48
【问题描述】:
我有以下 Angular 2 组件,我需要 ID 为 bannernote 的 textarea 在可见后立即聚焦 (isEditEnabled)
<div class="cont-notesbanner">
<p class="triangle"></p>
<h3 class="tit-notesbanner">Add notes:</h3>
<form (ngSubmit)="onSubmit(f)" #f="ngForm">
<p
class="p-notesbanner"
*ngIf="!isEditEnabled"
[ngClass]="currentAsset.notes.length === 0 ? 'it-place' : ''"
>
{{ currentAsset.notes.length === 0 ? "Add notes" : currentAsset.notes }}
</p>
<textarea
rows="4"
cols="50"
*ngIf="isEditEnabled"
class="txt-notesbanner"
name="bannernote"
id="bannernote"
rows="10"
[(ngModel)]="currentAsset.notes"
#bannernote
onload="$('#bannernote').focus();"
></textarea>
<div class="txt-right">
<a class="smallButton" (click)="onCloseBannernotes()">Cancel</a>
<a
class="smallButton"
(click)="onEditBannernotes()"
*ngIf="!isEditEnabled"
>Edit</a
>
<button type="submit" class="smallButton" *ngIf="isEditEnabled">
Accept
</button>
</div>
</form>
</div>
我已经尝试使用“onshow”和“onload”事件来实现这一点,正如您在上面看到的,但没有成功
我还在此方法中添加了代码,每当按钮从“编辑”切换到“接受”时都会调用该代码,例如document.getElementById("bannernotes").focus
但这不起作用,因为在调用该元素时,由于 ngif 尚未“执行”,因此该元素尚未被渲染
onEditBannernotes() {
this.isEditEnabled = !this.isEditEnabled;
}
【问题讨论】:
标签: angular