javascript - 当 Css 类改变时运行函数
问题描述
当我的输入为“脏”和“有效”时,我想更改下一个 HTML 元素的边框颜色。
HTML:
<input type="text" class="form-control" id="exampleId" formControlName="exampleId"
[ngClass]="{ 'is-valid': Form.get('exampleId')?.valid && vvtForm.get('exampleId')?.dirty) }"
(onKeyUp)="changeBorderColorOnValidation('exampleId')">
JavaScript:
changeBorderColorOnValidation(id) {
if (this.Form.get(id).valid) {
(document.querySelector('#' + id).nextSibling as HTMLElement).style.borderColor = '#28a745';
}
}
到目前为止,这是可行的,当您在 textarea 中键入内容时,将(onKeyUp)
验证 textarea 是否为空并更改边框颜色。
我想要一些更清洁的东西[ngRun]="functionToRun() | functionThatMustBeTrue".
这里:
[ngRun]="changeBorderColorOnValidation('exampleId') | Form.get('exampleId')?.valid && vvtForm.get('exampleId')?.dirty)
这样的事情存在吗?
解决方案
使用Adjacent 兄弟组合器和Angular 的状态类:
.ng-invalid.ng-dirty + * {
border-color: #28a745
}
推荐阅读
- python - RFM69:无法从天线中取出任何东西
- ffmpeg - 我正在使用 ffmpeg 在实时流上叠加图像。我如何根据屏幕的宽度进行缩放以使其完全适合
- argo-workflows - 如何将 Argo 工作流的多个输出工件指定到单个目录?
- java - Oracle 资源管理器未将 CPU 分配给查询
- html - 如果选中复选框,则为粗体标签 - 无标签选择器
- javascript - 如何创建自定义循环?
- azure-devops - 如何使用 Azure DevOps Rest API 获取代码覆盖率详细信息
- bash - 打印/提取 changelog.md 特定部分,使代码不区分大小写
- r - 如何计算R中不同点之间的过渡次数
- javascript - 网址未正确重定向到 GatsbyJs 中的特定页面