Angular 中的 JavaScript |事件绑定(bind)

标签 javascript html angular

我有一个 Twitter Bootstrap 表单,当它获得焦点时,它会获得橙色边框底部。但是输入行上的图标有自己的边框底部,我不知道如何将 Angular 中的焦点事件绑定(bind)到使图标的边框底部也变为橙色的函数。

<form>
    <div class="form-group">
        <div class="input-group">
            <div class="input-group-prepend">
                <div class="input-group-text" id="emailInputIcon"><i class="fal fa-envelope"></i></div>
            </div>
            <input type="email" class="form-control" id="emailInputLogin" aria-describedby="emailHelp" placeholder="EMAIL">
        </div>
     </div>
     <div class="form-group">
         <div class="input-group">
             <div class="input-group-prepend">
                 <div class="input-group-text" id="passwordInputIcon"><i class="fal fa-key"></i></div>
             </div>
             <input type="password" class="form-control" id="passwordInputLogin" placeholder="PASSWORD">
         </div>
     </div>
 <button type="submit" class="btn btn-primary">Login</button>
</form>

最佳答案

一个简单的方法就像这样(为了可读性而简化):

HTML:

<input (focus)="onInputFocused()" (blur)="onInputBlurred()" />
<div class="icon" #icon></div>

TS:

@ViewChild('icon') icon: ElementRef;

onInputFocused() {
    this.icon.nativeElement.style.borderBottom = 'orange 1px solid';
}
onInputBlurred() {
    this.icon.nativeElement.style.borderBottom = '';
}
<小时/>

更优雅:

HTML:

<input (focus)="onInputFocused()" (blur)="onInputBlurred()" />
<div class="icon" [ngClass]={'withBorder': focused}></div>

TS:

focused = false;
onInputFocused() {
    this.focused = true;
}
onInputBlurred() {
    this.focused = false;
}

CSS:

.withBorder {
    border-bottom: orange 1px solid;
}
<小时/>

没有 Angular,纯 CSS 解决方案(首选):

HTML:

<div class="has-input">
    <input type="text" />
    <div class="icon"></div>
</div>

CSS:

.has-input input:focus + .icon {
    border-bottom: orange 1px solid;
}

关于Angular 中的 JavaScript |事件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50335018/

相关文章:

javascript - jquery如何在子表单div中选择表单元素

Javascript 柯里化(Currying)并支持任意数量的调用

javascript - TypeScript:将函数调用转换为非空

html - 如何在悬停时有不同的背景动画时始终显示文本?

javascript - 物化用类初始化所有项目

css - 如何在 Angular 元素中包含字体?

widget - UserVoice 等托管服务如何将其内容嵌入其他网站?

html - 在影院 View 中像 Facebook 一样调整图像大小

angular - 内容安全策略 : Refused to execute inline script on lite server

javascript - 错误 : 'app-header' is not a known element: Angular 2