You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置p-calendar被触碰且值无效时显示红色边框

实现方案

你的写法没有生效的核心原因是:p-calendar组件的可见边框默认是作用在组件内部.p-calendar类的容器元素上,你直接给p-calendar宿主元素加边框的样式优先级低于PrimeNG内置样式,无法覆盖默认效果。

你可以直接修改你的SCSS代码中触碰失效状态的选择器即可,修改后的完整代码如下:

:host ::ng-deep .overtime-log-form {
  .col-12 {
    padding: 0;
  }
  &-working-hours {
    display: flex;
    .field {
      &:first-child {
        margin-right: 2.0625rem;
      }
      .p-calendar {
        max-width: 81px;
        border:solid #e7e7e7 1px;
        border-radius: 5px;
      }
      // 触碰且值无效时显示红色边框
      p-calendar.ng-touched.ng-invalid .p-calendar {
        border-color: #ac2525;
      }
    }
  }
  #reason {
    min-height: 7.6rem;
    max-height: 7.6rem;
    overflow-y: auto!important;
  }
}

额外校验点

需要确认你的p-calendar组件已经绑定了Angular表单控制器(使用formControlName或者ngModel),这样Angular才会自动给p-calendar宿主元素添加ng-touched、ng-invalid这类状态类,样式才能正常触发。

内容的提问来源于stack exchange,提问作者Damith F'do

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:06:05