web-dev-qa-db-ja.com

デフォルトの拡張パネル矢印の矢印スタイルを変更する

以下に示すように、angular拡張パネルがあります。

enter image description here

しかし、矢印のデザインを次のように変更したいと思います。

拡張されていません:

enter image description here

拡張:

enter image description here

どうやって?またはangular material?で行うことは可能ですか?以下のコード:

HTML:

<md-expansion-panel>
  <md-expansion-panel-header>
    <md-panel-title>
      Personal data
    </md-panel-title>
    <md-panel-description>
      Type your name and age
    </md-panel-description>
  </md-expansion-panel-header>

  <md-form-field>
    <input mdInput placeholder="First name">
  </md-form-field>

  <md-form-field>
    <input mdInput placeholder="Age">
  </md-form-field>
</md-expansion-panel>

TS:

import {Component} from '@angular/core';

/**
 * @title Basic expansion panel
 */
@Component({
  selector: 'expansion-overview-example',
  templateUrl: 'expansion-overview-example.html',
})
export class ExpansionOverviewExample {}
10
CloudSeph

はい、可能です。拡張パネルに参照IDを付けます。 exampleおよびhideToggleプロパティをtrueとして設定します。

の中に <md-panel-description>、アイコンを配置し、パネルのexpandedプロパティを使用して、関連するアイコンを表示または非表示にすることができます。

  <md-expansion-panel  class="custom-header" hideToggle="true" #example>
    <md-expansion-panel-header>
      <md-panel-title>
        Personal data
      </md-panel-title>
      <md-panel-description>
        Type your name and age
        <md-icon *ngIf="!example.expanded">play_arrow</md-icon>
        <md-icon *ngIf="example.expanded">arrow_drop_down</md-icon>
      </md-panel-description>
    </md-expansion-panel-header>

    <md-form-field>
      <input mdInput placeholder="First name">
    </md-form-field>

    <md-form-field>
      <input mdInput placeholder="Age">
    </md-form-field>
  </md-expansion-panel>

アイコンとパネルの説明の間にスペースを設けるには、component.cssに次のクラスを追加します。

.custom-header .mat-expansion-panel-header-title, 
.custom-header .mat-expansion-panel-header-description {
  flex-basis: 0;
}

.custom-header .mat-expansion-panel-header-description {
  justify-content: space-between;
  align-items: center;
}

素材アイコンを使用しています。必要に応じて、カスタムアイコンを配置できます。これが stackblitz demo へのリンクです。

18
Faisal

@Faisalからの回答を拡張し、angularマテリアルの最新バージョンに従って、マテリアルコンポーネントにmatの代わりにmdプレフィックスを使用します。

Angular Material 8.1.4

<mat-expansion-panel class="mb-15px" hideToggle="true" #xyz>
<mat-expansion-panel-header>
  <mat-panel-title class="font-weight-bold font-small">
    Info
  </mat-panel-title>
  <mat-panel-description>
    <mat-icon *ngIf="!xyz.expanded">play_arrow</mat-icon>
    <mat-icon *ngIf="xyz.expanded">arrow_drop_down</mat-icon>
  </mat-panel-description>
</mat-expansion-panel-header>
<mat-expansion-panel class="mb-15px" hideToggle="true" #xyz>

Stackblitzデモ

2
Zuber