Angular中Select Option显示不符合预期问题求助
问题描述
我想实现如图所示的Select-Option输入框样式:
但实际显示效果不符,怀疑是Bootstrap与Angular Material两个CSS库样式冲突导致的。我的Angular项目仅使用Bootstrap、Angular Material及Angular原生HTML标签,未引入其他外部CSS样式,实际显示效果如下:
HTML代码片段
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-8"> <div class="form-group"> <mat-label for="country_ref_id">Country Name<em style="color: red;">*</em></mat-label> <mat-form-field class="example-full-width" appearance="outline"> <mat-select class="form-select" data-style="btn-primary" formControlName="country_ref_id" name="country_ref_id" id="country_ref_id"> <mat-option value="">Select Country</mat-option> <mat-option [value]="Country.id" *ngFor="let Country of CountryList">{{Country.country}}</mat-option> </mat-select> </mat-form-field> </div> </div>
angular.json配置
{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "version": 1, "newProjectRoot": "projects", "projects": { "frontend": { "projectType": "application", "schematics": {}, "root": "", "sourceRoot": "src", "prefix": "app", "architect": { "build": { "builder": "@angular-devkit/build-angular:browser", "options": { "outputPath": "dist/frontend", "index": "src/index.html", "main": "src/main.ts", "polyfills": [ "zone.js" ], "tsConfig": "tsconfig.app.json", "assets": [ "src/favicon.ico", "src/assets" ], "styles": [ "./node_modules/bootstrap/dist/css/bootstrap.min.css", "@angular/material/prebuilt-themes/indigo-pink.css" ], "scripts": [ "./node_modules/bootstrap/dist/js/bootstrap.bundle.min.js" ] }, "configurations": { "production": { "budgets": [ { "type": "initial", "maximumWarning": "500kb", "maximumError": "1mb" }, { "type": "anyComponentStyle", "maximumWarning": "2kb", "maximumError": "4kb" } ], "outputHashing": "all" }, "development": { "buildOptimizer": false, "optimization": false, "vendorChunk": true, "extractLicenses": false, "sourceMap": true, "namedChunks": true } }, "defaultConfiguration": "production" }, "serve": { "builder": "@angular-devkit/build-angular:dev-server", "configurations": { "production": { "browserTarget": "frontend:build:production" }, "development": { "browserTarget": "frontend:build:development" } }, "defaultConfiguration": "development" }, "extract-i18n": { "builder": "@angular-devkit/build-angular:extract-i18n", "options": { "browserTarget": "frontend:build" } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "polyfills": [ "zone.js", "zone.js/testing" ], "tsConfig": "tsconfig.spec.json", "assets": [ "src/favicon.ico", "src/assets" ], "styles": [ "src/styles.css" ], "scripts": [] } } } } } }
浏览器控制台渲染代码
<div class="mat-mdc-form-field-infix ng-tns-c6-0"><!--bindings={ "ng-reflect-ng-if": "false" }--><mat-select _ngcontent-iwn-c9="" role="combobox" aria-autocomplete="none" aria-haspopup="listbox" data-style="btn-primary" formcontrolname="country_ref_id" name="country_ref_id" id="country_ref_id" class="mat-mdc-select form-select ng-tns-c8-1 ng-tns-c6-0 mat-mdc-select-required ng-pristine ng-invalid ng-star-inserted mat-mdc-select-invalid ng-touched" ng-reflect-id="country_ref_id" ng-reflect-name="country_ref_id" aria-labelledby="mat-select-value-1" tabindex="0" aria-expanded="false" aria-required="true" aria-disabled="false" aria-invalid="true"><div cdk-overlay-origin="" class="mat-mdc-select-trigger ng-tns-c8-1"><div class="mat-mdc-select-value ng-tns-c8-1" ng-reflect-ng-switch="false" id="mat-select-value-1"><!--bindings={ "ng-reflect-ng-switch-case": "true" }--><span class="mat-mdc-select-value-text ng-tns-c8-1 ng-star-inserted" ng-reflect-ng-switch="false"><span class="mat-mdc-select-min-line ng-tns-c8-1 ng-star-inserted">Select Country</span><!--container--><!--bindings={ "ng-reflect-ng-switch-case": "true" }--></span><!--bindings={ "ng-reflect-ng-switch-case": "false" }--></div><div class="mat-mdc-select-arrow-wrapper ng-tns-c8-1"><div class="mat-mdc-select-arrow ng-tns-c8-1"><svg viewBox="0 0 24 24" width="24px" height="24px" focusable="false" class="ng-tns-c8-1"><path d="M7 10l5 5 5-5z" class="ng-tns-c8-1"></path></svg></div></div></div><!--bindings={ "ng-reflect-open": "false" }--></mat-select></div>
补充说明
后来发现预期效果使用了Atrio等Angular主题,仅复制部分代码无法实现。
内容的提问来源于stack exchange,提问作者Purushottam Nawale
相关产品推荐
相关产品推荐

