当前位置: 首页 > 知识库问答 >
问题:

如何覆盖“ng-template”构建字段的css syle而不使用/deep/?

曹成双
2023-03-14

我对使用ng-template的一些组件有一个问题。如果我使用的组件生成了一些我不想要的元素或者包含了一个有缺陷的东西,我就会寻找解决方法。理想情况下,我不应该这样做,但一旦这些依赖库出现了一些问题,我就不得不这样做了。以前的popver和现在的NGX-DataTable都面临类似的问题。如果你能告诉我我需要遵循的更好的练习,我很感激。

例如,对于ngx-dataTabler-row-detail模板,我得到了一个带有div的输出,它具有.dataTable-row-detail类。如果我不使用/deep/重写它(我听说这是不推荐的),那么即使!importity也无法重写宽度。我如何为angular组件中生成的字段覆盖这些类样式,因为没有办法给它们一个ID

null

/deep/
.datatable-body-row{
  border-bottom:1px solid #000;
}

/deep/
.datatable-row-detail{
  width:600px !important;
}
   <!-- Row Detail Template -->
    <ngx-datatable-row-detail [rowHeight]="120"  #myDetailRow (toggle)="onDetailToggle($event)">
      <ng-template
       ...>
        <div style="padding-left:35px" >
          <div><strong>==== Details ===</strong></div>
            <li *ngFor="let detail of row.details">
              {{detail }}
            </li>

        </div>
      </ng-template>
    </ngx-datatable-row-detail>

    <ngx-datatable-column>
    <ng-template
      ...>
      <a
    (click)="toggleExpandRow(row)"> <i class="fa fa-cube btn-link" hover-class="active"></i>
      </a>
    </ng-template>
  </ngx-datatable-column>

null

请看这个Stackblits。只需从css中删除/deep/,当您单击Open时,您将不再看到背景。

https://stackblitz.com/edit/ngx-datatable-row-detail-omuywi?file=app/app.component.css

共有2个答案

水飞掣
2023-03-14

一个快速而简单的方法是在ng模板中设置一个div,在该div中分配您的类:

<ng-template let-row="row" ngx-datatable-cell-template>
    <div class='row-detail'>
        <span>
            {{ row?.gruppen[i]['menge']}}  
        </span>
    </div>

CSS:

row-detail {
  background: rgb(134, 79, 79) !important;
}
孔乐邦
2023-03-14

我认为不可能以干净的方式从Angular组件重写第三方组件样式。(可以选择使用不推荐使用的deep或关闭viewencapsulation。)

但是,可以从应用程序根目录中的全局styles.scss重写它们。如果我们将以下样式放入其中,它就起作用了:

.datatable-body-row {
  border-bottom: 1px solid #000;
}

.datatable-row-detail {
  background: rgb(134, 79, 79) !important;
}

stackblitz:https://stackblitz.com/edit/ngx-datatable-row-detail-mj3otr?file=styles.css

 类似资料:
  • 当我通过这个示例类模拟和运行测试时,mockito跳过了静态部分,这是有意义的,因为我模拟了HARD_CACHE的值,但同时我希望代码100%覆盖。静态字段应该在没有模拟的情况下测试吗?或者有没有一种方法可以使用模拟测试静态字段/方法/变量?

  • 问题内容: 我正在使用maven-jetty-plugin并尝试使用-Djetty.port = 8090覆盖我的jetty.xml设置,但是它不起作用。仅当我从jetty.xml文件中删除连接器部件时,端口才是8090。 所以: 随着连接器在端口8080中启动 如果没有在端口8090中启动连接器 问题是我需要配置接受器,统计信息和其他内容。我尝试仅从连接器中删除端口,但是没有用。 我正在使用:

  • 问题内容: 我刚刚注意到,覆盖方法的行为与覆盖字段的行为不同。考虑以下代码段: 结果为: 1 值v为4 因此,似乎bar中的方法printV被foo.printV覆盖,而字段v中的方法并未被bar覆盖。有人知道这种差异的原因吗? 谢谢。 问题答案: 我刚刚注意到,覆盖方法的行为与覆盖字段的行为不同。 没有“覆盖字段”之类的东西。您可以 阴影 字段,但不能覆盖它们。字段不是多态的。有关更多详细信息,

  • 问题内容: 我想为 isEmpty 方法添加自定义行为。 当我从 我应该重写序列化方法,因为它是抽象的。 我想按原样保留序列化方法,并仅覆盖isEmpty方法。 问题答案: 为了修改行为但保持默认的序列化,您可以利用 serializer修饰符 。您仍然必须实现自定义序列化程序,但是可以非常干净地利用默认序列化程序。 使用默认的序列化器创建一个自定义序列化器 将变量插入到您的自定义序列化器类中。当

  • 问题内容: 下面的代码是我到目前为止所拥有的。当它写入.csv文件时,它将覆盖我之前在文件中写入的内容。如何以不擦除我之前的文本的方式写入文件(我的代码的目的是要有一个人输入他们的名字,让程序记住他们) 问题答案: 您需要在下次添加文件。这可以通过以追加模式打开文件来完成。

  • 问题内容: 同时定义href属性和ng-click属性: 该属性优先于ng-click。 我正在寻找一种提高ng-click优先级的方法。 是Twitter Bootstrap所必需的,我无法将其删除。 问题答案: 如果不需要uri,则应该只使用按钮标签。