Матовый значок отображается внутри кнопки вместо правого верхнего - PullRequest
0 голосов
/ 24 августа 2018

Я пытаюсь использовать значки из углового материала. У меня есть несколько навигационных кнопок, на которые я хочу их надеть, но я просто помещаю число внутри кнопки вместо маленького кружка с номером внутри в правом верхнем углу кнопки, как в примере: https://material.angular.io/components/badge/examples

Вот как выглядит моя: https://imgur.com/a/4tM8fc8

HTML:

<div fxLayout="column" fxLayoutAlign="start stretch">
  <button mat-raised-button type="button" matBadge="8" *ngFor="let item of items" [color]="item.Active ? 'accent' : null" fxLayout="row" fxLayoutAlign="space-between center" (click)="HandleItemClick(item)">
    <mat-icon *ngIf="item.MenuIcon">{{item.MenuIcon}}</mat-icon>
    <span>{{item.MenuText}}</span>
  </button>
</div>

CSS:

:host {
    display: block;
    background-color: #e0e0e0;
    height: 100%;
}

button {
    margin: 5px;
}

button mat-icon {
    margin-right: 10px;
}

div {
    background-color: #e0e0e0;
}

Я поиграл со всеми вариантами. Их не так много, и они ничего не меняют. У меня есть MatBadgeModule, импортированный в мой файл app.material.module.ts. Это где все мои другие материальные модули, и они работают нормально. Я сделал то же самое, что и в примере, и он не работает.

Если это проблема с зависимостями, вот мой package.json:

{
  "name": "PURE",
  "version": "1.0.0",
  "scripts": {
    "ng": "ng",
    "start": "webpack-dev-server --port=4201",
    "start.vs2017": "webpack-dev-server --port=4201 --config ./webpack.vs.config.js",
    "start.aot.vs2017": "webpack-dev-server --port=4201 --aot --config ./webpack.vs.config.js",
    "build": "webpack",
    "build.aot": "webpack --config ./webpack.aot.config.js",
    "build.vs2017": "webpack --config ./webpack.vs.config.js",
    "build.aot.vs2017": "webpack --config ./webpack.vsaot.config.js",
    "test": "karma start ./karma.conf.js",
    "lint": "ng lint",
    "e2e": "protractor ./protractor.conf.js",
    "pree2e": "webdriver-manager update --standalone false --gecko false --quiet"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "6.0.0",
    "@angular/common": "6.0.0",
    "@angular/compiler": "6.0.0",
    "@angular/core": "6.0.0",
    "@angular/forms": "6.0.0",
    "@angular/http": "6.0.0",
    "@angular/router": "6.0.0",
    "@angular/platform-browser": "6.0.0",
    "@angular/platform-browser-dynamic": "6.0.0",
    "@angular/flex-layout": "6.0.0-beta.17",
    "@angular/material": "6.0.0",
    "@angular/cdk": "6.0.0",
    "core-js": "^2.4.1",
    "file-saver": "1.3.3",
    "moment": "2.22.2",
    "ng2-webstorage": "2.0.0",
    "rxjs": "6.0.0",
    "web-animations-js": "2.2.5",
    "zone.js": "^0.8.12"
  },
  "devDependencies": {
    "@angular/cli": "1.6.5",
    "@angular/compiler-cli": "5.2.5",
    "@angular/language-service": "5.1.2",
    "@types/jasmine": "~2.8.3",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "autoprefixer": "^6.5.3",
    "codelyzer": "4.1.0",
    "css-loader": "^0.28.1",
    "cssnano": "^3.10.0",
    "exports-loader": "^0.6.3",
    "file-loader": "1.1.6",
    "istanbul-instrumenter-loader": "3.0.0",
    "jasmine-core": "2.99.1",
    "jasmine-spec-reporter": "4.2.1",
    "json-loader": "^0.5.4",
    "karma": "2.0.0",
    "karma-chrome-launcher": "2.2.0",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "less-loader": "^4.0.2",
    "postcss-loader": "^1.3.3",
    "postcss-url": "^5.1.2",
    "protractor": "~5.1.2",
    "raw-loader": "^0.5.1",
    "sass-loader": "^6.0.3",
    "script-loader": "^0.7.0",
    "source-map-loader": "^0.2.0",
    "string-replace-webpack-plugin": "0.1.3",
    "style-loader": "^0.13.1",
    "stylus-loader": "^3.0.1",
    "ts-node": "3.2.0",
    "tslint": "5.9.1",
    "typescript": "2.5.3",
    "url-loader": "0.6.2",
    "webpack": "3.11.0",
    "webpack-dev-server": "2.11.1"
  },
  "-vs-binding": {
    "ProjectOpened": [
      "start.vs2017"
    ]
  }
}

1 Ответ

0 голосов
/ 27 августа 2018

Установите этот StackBlitz на основе вашего кода: Значок углового материала

HTML-файл:

<div fxLayout="column" fxLayoutAlign="start stretch">
  <button 
    mat-raised-button 
    type="button" 
    matBadge="8" 
    *ngFor="let item of items" 
    [color]="item.Active ? 'accent' : null" 
    fxLayout="row" 
    fxLayoutAlign="space-between center"
    (click)="doSomething()">

    <mat-icon *ngIf="item.MenuIcon">{{item.MenuIcon}}</mat-icon>
    <span>{{item.MenuText}}</span>
  </button>
</div>

Файл TS:

export class AppComponent  {
  name = 'Angular';

  items = [];

  constructor() {
    this.items = [
      { Active: true, MenuText: "Text 1", MenuIcon: "home" }
    ];
  }

  doSomething() {
    console.log("LOG");
  }
}

Файл CSS:

:host {
    display: block;
    background-color: #e0e0e0;
    height: 100%;
}

button {
    margin: 5px;
}

button mat-icon {
    margin-right: 10px;
}

div {
    background-color: #e0e0e0;
}

файл app.module.ts:

import {BrowserAnimationsModule} from '@angular/platform-browser/animations';
import {MatButtonModule} from '@angular/material/button';
import {MatIconModule} from '@angular/material/icon';
import {MatBadgeModule} from '@angular/material/badge';
import {FormsModule} from '@angular/forms';


  imports: [ 
      BrowserModule, FormsModule, BrowserAnimationsModule, 
      MatButtonModule, MatIconModule, MatBadgeModule ]

файл style.css:

@import "~@angular/material/prebuilt-themes/indigo-pink.css";

Я думаю, что это часть, которую выотсутствует, добавление стиля к угловому материалу (что является обязательным).

...