【问题标题】:how to apply border color for ion-card using ngClass如何使用 ngClass 为离子卡应用边框颜色
【发布时间】:2020-06-23 22:29:53
【问题描述】:

我是一个像下面这样的数组

this.defaultBackground=[{"applyBackground":"true"},{"applyBackground":"false"}];

在我的 html 中我使用了 ion-card

<div *ngFor="let details of addressArray; let idx = index" 
    [ngClass]="defaultBackground[idx].applyBackground ? 'zerocard':'oneCardData' ">
   <ion-card></ion-card>
</div>

这是我的css代码

.zerocard{
        .card-ios {
            margin: 12px 12px 12px 0px;
            border: 1px solid $green-color !important;
        }

        .card-md {
            margin: 12px 12px 12px 0px;
            border: 1px solid $green-color !important;
        }

                ion-col[width-80]{
            padding-left: 15px;
            font-family: $font-roboto;
            font-weight: bold;
            color: gray;
        }
        ion-col[width-20]{
            ion-icon{
                color:gray;
                padding-left: 15px;
            }
        }

        ion-card{
            width: 100%;
        }

        ion-card-header{
            padding: 0px;
        }

        ion-card-content{
            ion-row p {
                color:black;
                margin-bottom: -5px;
            }
            ion-row{

                ion-col{
                    margin-bottom: -14px;
                    margin-left: -5px;
                    margin-top: -5px;
                }
                ion-col[width-80]{
                    text-align: left;
                    padding-left: 0px;
                }
                ion-col[width-20]{
                    text-align: right;
                }
            }   
        }
    }

    .oneCardData{
        .card-ios {
            margin: 12px 12px 12px 0px;
            //border: 1px solid $green-color !important;
        }

        .card-md {
            margin: 12px 12px 12px 0px;
            //border: 1px solid $green-color!important;
        }

        ion-col[width-80]{
            padding-left: 15px;
            font-family: $font-roboto;
            font-weight: bold;
            color: gray;
        }
        ion-col[width-20]{
            ion-icon{
                color:gray;
                padding-left: 15px;
            }
        }

        ion-card{
            width: 100%;
        }

        ion-card-header{
            padding: 0px;
        }

        ion-card-content{
            ion-row p {
                color:black;
                margin-bottom: -5px;
            }
            ion-row{

                ion-col{
                    margin-bottom: -14px;
                    margin-left: -5px;
                    margin-top: -5px;
                }
                ion-col[width-80]{
                    text-align: left;
                    padding-left: 0px;
                }
                ion-col[width-20]{
                    text-align: right;
                }
            }   
        }

    }

我的数组中有两个对象显示在我的 ui 卡中,我使用了基于“defaultBackground”数组的两种颜色。

上面的代码总是只应用一个CardData css 类。

所以在我的检查元素中,我只看到 oneCardData css,但我的 zerocard css 未应用

更新

用 idx in 的 indext 更新了我的 html 部分以显示真或假。

【问题讨论】:

  • 你试过[ngClass]="true ? 'zerocard':'oneCardData' "&gt;[ngClass]="false ? 'zerocard':'oneCardData' "&gt;吗?如果这符合您的要求,那么 defaultBackground.applyBackground 可能不会返回您期望的结果。
  • 检查我更新的问题@GünterZöchbauer

标签: angular sass ionic2 ng-class angular-ng-class


【解决方案1】:

删除布尔值周围的引号

this.defaultBackground=[{"applyBackground": true},{"applyBackground": false}];

【讨论】:

  • 你是对的,如果引号将删除完美的工作并且不需要像我在循环中放入'true'这样的条件
【解决方案2】:

您的 html 似乎不正确,请更新您的 html 如下:

<style>
    .zerocard {
        background-color:red;
        color:white;
    }
     .oneCardData {
        background-color:blue;
        color:white;
    }
</style>

<div *ngFor="let item of defaultBackground">
    <div [ngClass]="item.applyBackground=='true' ? 'zerocard':'oneCardData' " style="height:50px;">
        {{item.applyBackground}}
    </div>
</div>

输出:

【讨论】:

  • 我觉得我的回答对你有帮助,for循环中不需要索引变量
  • 您的代码确实产生了正确的输出,但在当前场景中没有用。 Mohan 在他的问题中有一个addressArray,因此您的解决方案将导致嵌套循环,或者您仍然必须适合索引变量
  • 当他的 html 不正确时我回答了,我只是猜测他要做什么并回答,我猜 70% 正确
【解决方案3】:

在 CSS 中很简单。如果我们使用box-shadow:none;,它不会显示边框颜色。如果我们使用填充,那么它可以工作。

ion-card{
     box-shadow: none;
     border: black;
     background-color: white;
     border-radius: 5px;
     padding:15px;
}

【讨论】:

  • 你在这里同时使用了 box-shadow:none 和 padding。但要么干扰 IMO 边境。
  • 问题在于 ngClass
猜你喜欢
  • 1970-01-01
  • 2022-01-20
  • 2018-10-04
  • 2019-01-13
  • 2022-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-19
相关资源
最近更新 更多