覆盖 Angular-5 中库组件的 css 类属性

Vin*_*nod 3 css angular-ui-bootstrap bootstrap-4 angular angular5

我的代码中有一个来自第三方库的 angular-5 下拉组件,这个组件有自己的 CSS,由于它的默认行为,我无法更改它的 CSS(这里我试图减少下拉的宽度),我试过了也使用编写另一个 css 类和内联样式,但它不会改变宽度。

HTML 代码,我已经控制了我的代码:(第 3 方下拉组件)

    <test-dropdown id="dropdown" label="Options Array"
              [selectedOption]="dropdownOptions[0]">
           <test-option *ngFor="let option of dropdownOptions"
              [option]="option" [disabled]="option.disabled">{{option.label}}  
           </test-option>
    </test-dropdown>
Run Code Online (Sandbox Code Playgroud)

上面的下拉组件,在浏览器中运行应用程序后看起来像,

    <test-dropdown _ngcontent-c4="" id="dropdown" label="default" ng-reflect-label="default">
  <div class="test-dropdown" ng-reflect-ng-class="[object Object]">
    <label>DropDown</label>
    <div>
      <button class="select">Select...</button>
      <div class="dropdown">
        <!--bindings={
  "ng-reflect-ng-for-of": "[object Object],[object Object"
  }-->
        <test-option _ngcontent-c4="" class="dropdown-btn-vp option ng-star-inserted" style="min-width: 120px"
                     ng-reflect-option="[object Object]">
          <button class="option">
            Option One
          </button>
        </test-option>
        <test-option _ngcontent-c4="" class="dropdown-btn-vp option ng-star-inserted" style="min-width: 120px"
                     ng-reflect-option="[object Object]">
          <button class="option">
            Option Two
          </button>
        </test-option>
        <!--bindings={}-->
      </div>
    </div>
  </div>
</test-dropdown>
Run Code Online (Sandbox Code Playgroud)

简而言之,我想在类上应用 css 样式,test-dropdown->button.selecttest-dropdown->div.dropdown

Vin*_*nod 8

我使用::ng-deep pseudo-class selector,请参阅此文档https://blog.angular-university.io/angular-host-context进行角度视图封装。

下面的代码片段适用于我使用 ng-deep 覆盖 css 属性。例如,在我的例子中<test-dropdown>是一个角度组件,它采用它的默认 css 类.dropdown,现在我想修改min-width属性,所以我使用 ng-deep 伪类选择器做了它,其他角度组件也一样。

test-dropdown::ng-deep .dropdown {
  min-width: 20%;
}

test-button::ng-deep .test-button {
  padding: 6px 12px;
  font-size: 14px;
  line-height: 1.42857143;
  text-align: center;
  cursor: pointer;
  min-width: 20%;
}

test-date-picker::ng-deep .date {
  min-width: 100%;
  line-height: 1.42857143;
}

test-date-picker::ng-deep .date-picker {
  min-width: 100%;
  line-height: 1.42857143;
}
Run Code Online (Sandbox Code Playgroud)