I have update the solution to work on Production env. ng-reflect attribute may not be available in prod env.
OLD - 仅适用于开发环境。
我已阅读上述所有解决方案。我想分享我的。您只需要以下两个属性即可了解,无需创建自定义索引。
[ng-reflect-selected='false'] and [ng-reflect-active='true']
以上两种状态共有三种。
-
[ng-reflect-selected='true'] and [ng-reflect-active='true']
- 它代表当前状态 - 表示当前此步进头处于活动状态。
-
[ng-reflect-selected='false'] and [ng-reflect-active='true']
- 它代表之前的状态 - 这意味着您已经从这个步进器头继续前进。
-
[ng-reflect-selected='false'] and [ng-reflect-active='false']
- 它代表下一个状态 - 这意味着您还没有从当前的步进头继续前进。
现在来解决问题。达到this状态。
你需要使用这个[ng-reflect-selected='false'] and [ng-reflect-active='true']
.mat-horizontal-stepper-header {
&[ng-reflect-selected='false'][ng-reflect-active='true'] + .mat-stepper-horizontal-line {
border-color: #4ca131; //green color
}
}
上面转换成HTML的CSS结构是这样的
<element class="mat-horizontal-stepper-header" ng-reflect-selected="false"
ng-reflect-active="true">
<element class="mat-stepper-horizontal-line">
会改变当前标题前的横线颜色。
更新 - 适用于开发和生产环境。
上述解决方案在生产环境中可能不起作用,因为 ng-reflect 属性可能不可用。为此,您可以检查以下解决方案 - 因为 aria-selected 属性在 dev 和 prod env 中都可用。
.mat-horizontal-stepper-header .mat-stepper-horizontal-line {
border-top-color: green; //Green Color
border-top-width: 1px;
border-top-style: solid;
}
.mat-horizontal-stepper-header[aria-selected='true'] ~ .mat-stepper-horizontal-line{
border-top-color: hsl(0, 0%, 50%) !important;
}
我所做的是默认情况下,我将所有水平线颜色设置为绿色,然后在选定/当前向导步骤之后将所有水平线颜色更改为灰色。这将使所有先前访问的步进器标题变为绿色。