Angular MaterialButtonレイアウト/ビューを切り替えるために切り替えます

ネクロライト

私はAngularMaterialを使用してAngular7サイトを構築しています(私はWeb開発の初心者です)。ばかばかしいほど些細なことのように思えます。products.componentでAngular Material Button Toggle使用して、製品のグリッドビュー(デフォルト)とリストビューを切り替えたいと考えています。非常に多くのeコマースで見られる機能。これが私の簡略化されたコードです:

<mat-button-toggle-group value="grid">
    <mat-button-toggle value="grid">
        <mat-icon>view_module</mat-icon>
    </mat-button-toggle>
    <mat-button-toggle value="list">
        <mat-icon>view_list</mat-icon>
    </mat-button-toggle>
</mat-button-toggle-group>

製品のグリッドビュー(デフォルトビューである必要があります):

<div *ngFor="let product of products">
    <a>
       ...
    </a>
</div>

製品のリストビュー:

<div>
    <ul>
        <li *ngFor="let product of products"></li>
    </ul>
</div>

私はViewChild、NgModel、NgSwitch、TemplateRef、あらゆる種類のソリューションを試しました...何かが足りないので、これにかなりの時間を費やしているので、あなたに頼っています!前もって感謝します


編集:ルーティングを実装しないと、app.componentは次のようになります。

<app-header>
<app-products>
<app-footer>

私のproducts.componentはこのように構築されています(簡略化)

<mat-toolbar>
    <mat-button-group>
    ...
    </mat-button-group>
</mat-toolbar>
<div class="container">
    <div *ngFor="let product of products">
        <a>
        ...
        </a>
    </div>
    <div>
        <ul>
            <li *ngFor="let product of products">
            ...
            </li>
        </ul>
    </div>
</div>

つまり、オールインワンコンポーネントです。グリッドビュー用に2つの子コンポーネントを作成しますが、リストは適切ではありませんか?とにかく、これを試した別のコンポーネントのdiv.container内のコードを移動してみました。

@Component({ 
templateUrl:
`
    <div #listTemplate>
      <p>List View</p>
    </div>

    <div #gridTemplate>
      <p>Grid View</p>
    </div>
`
})
export class ... {
    @ViewChild('listTemplate') listTemplate: TemplateRef<any>;
    @ViewChild('gridTemplate') gridTemplate: TemplateRef<any>;
}

しかし、ボタンのトグルをクリックしてこれをバインドできませんでした。Material Button Toggleは、クリックすると変更イベントを発行するため、ngModelを使用できるようになります。私はこのようなことを試しました:

<mat-toolbar>
    <mat-button-group>
        <mat-button-toggle (click)="change(view.value)">...</mat-button-toggle>
        <mat-button-toggle (click)="change(view.value)">...</mat-button-toggle>
    </mat-button-group>
</mat-toolbar>
<div class="container">
    <div *ngFor="let product of products" [(ngModel)]="grid" #view>
        <a>
        ...
        </a>
    </div>
    <div [(ngModel)]="list" #view>
        <ul>
            <li *ngFor="let product of products">
            ...
            </li>
       </ul>
    </div>
</div>

しかし、change(value)を使用して適切なテンプレートを挿入する方法がわかりません。ngTemplateOutletは適切な解決策かもしれませんが、私はそれを試していません。明らかに、私はこのAngularの機能についてある程度理解していませんが、自分のサイトで他のものを実装することに成功したので、これを達成したいと思います。

zer0

これがトグルボタンの実用的なサンプルです:https//stackblitz.com/edit/angular-rlnalw

<mat-button-toggle-group [value]="toggle" (change)="toggleView($event)">
  <mat-button-toggle [value]="true">
      Grid
  </mat-button-toggle>
  <mat-button-toggle [value]="false">
      List
  </mat-button-toggle>
</mat-button-toggle-group>
<span>Current Value: {{toggle}}</span>
<div *ngIf="toggle">Grid</div>
<div *ngIf="!toggle">List</div>

TS:

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

@Component({
  selector: 'my-app',
  templateUrl: './app.component.html',
  styleUrls: [ './app.component.css' ]
})
export class AppComponent{
  toggle: boolean = true;
  constructor(){
  }

  toggleView(change: MatButtonToggleChange){
    this.toggle = change.value;
  }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Angular2でレイアウトを切り替える方法

分類Dev

Angular2でレイアウトを切り替える方法

分類Dev

Angular2でレイアウトを切り替える方法

分類Dev

Angularでdivを切り替えます

分類Dev

Angularのサイドバーを切り替えます

分類Dev

アイコンを切り替えるためにAngularのngForで使用されるngClass

分類Dev

Angular 7 + AngularMaterial。展開されたマットメニュードロップダウンのアイコンを切り替える方法は?

分類Dev

スタイルの表示を切り替えるためにAngularコンポーネント間でブール値を渡す方法

分類Dev

Angular5をHttpClientに切り替えるとサービスが壊れました

分類Dev

Angular6のメニューを切り替えたい

分類Dev

Angular 5:ngClassを使用して、モバイルビューとデスクトップビューのクラスを切り替えます

分類Dev

md-sidenavモードを切り替えます(Angular Material 2)

分類Dev

Angular8を使用してFormbuilderTypescriptでビュー内のFormControlを切り替えます

分類Dev

Angular ngClassおよびクラスを切り替えるためのクリックイベント

分類Dev

Angular2のアコーディオン内の特定のパネルを切り替えるために変数を渡す方法

分類Dev

Angular8コンポーネントでMatSlideToggleを切り替えます

分類Dev

Angular5の兄弟コンポーネントを切り替えます

分類Dev

Angular 2:条件に基づいてブール値を切り替えます

分類Dev

Angular jsは、チェック時にデータを有効または無効に切り替えます

分類Dev

Angular2のマスター/詳細パターンのアイテムを切り替えるときにURLを更新します

分類Dev

リストアイテムangular2のクラスバグを切り替えます

分類Dev

Angularクライアント側の言語切り替え

分類Dev

ルートに応じてコンポーネントを切り替えますAngular4

分類Dev

Angular HTMLテンプレートを切り替えることは可能ですか?

分類Dev

Angular 8で言語を切り替える方法はありますか?

分類Dev

templateUrl(Angular 7)の条件を使用して、モバイルテンプレートとデスクトップテンプレートを切り替えます

分類Dev

Angular 2:異なるコンポーネントからsidenavを切り替えます

分類Dev

DivをAngular6と切り替えます

分類Dev

Angular6 +によってメインアプリコンポーネントに影響を与えるヘッダーコンポーネントのボタンでクラスを切り替えます

Related 関連記事

  1. 1

    Angular2でレイアウトを切り替える方法

  2. 2

    Angular2でレイアウトを切り替える方法

  3. 3

    Angular2でレイアウトを切り替える方法

  4. 4

    Angularでdivを切り替えます

  5. 5

    Angularのサイドバーを切り替えます

  6. 6

    アイコンを切り替えるためにAngularのngForで使用されるngClass

  7. 7

    Angular 7 + AngularMaterial。展開されたマットメニュードロップダウンのアイコンを切り替える方法は?

  8. 8

    スタイルの表示を切り替えるためにAngularコンポーネント間でブール値を渡す方法

  9. 9

    Angular5をHttpClientに切り替えるとサービスが壊れました

  10. 10

    Angular6のメニューを切り替えたい

  11. 11

    Angular 5:ngClassを使用して、モバイルビューとデスクトップビューのクラスを切り替えます

  12. 12

    md-sidenavモードを切り替えます(Angular Material 2)

  13. 13

    Angular8を使用してFormbuilderTypescriptでビュー内のFormControlを切り替えます

  14. 14

    Angular ngClassおよびクラスを切り替えるためのクリックイベント

  15. 15

    Angular2のアコーディオン内の特定のパネルを切り替えるために変数を渡す方法

  16. 16

    Angular8コンポーネントでMatSlideToggleを切り替えます

  17. 17

    Angular5の兄弟コンポーネントを切り替えます

  18. 18

    Angular 2:条件に基づいてブール値を切り替えます

  19. 19

    Angular jsは、チェック時にデータを有効または無効に切り替えます

  20. 20

    Angular2のマスター/詳細パターンのアイテムを切り替えるときにURLを更新します

  21. 21

    リストアイテムangular2のクラスバグを切り替えます

  22. 22

    Angularクライアント側の言語切り替え

  23. 23

    ルートに応じてコンポーネントを切り替えますAngular4

  24. 24

    Angular HTMLテンプレートを切り替えることは可能ですか?

  25. 25

    Angular 8で言語を切り替える方法はありますか?

  26. 26

    templateUrl(Angular 7)の条件を使用して、モバイルテンプレートとデスクトップテンプレートを切り替えます

  27. 27

    Angular 2:異なるコンポーネントからsidenavを切り替えます

  28. 28

    DivをAngular6と切り替えます

  29. 29

    Angular6 +によってメインアプリコンポーネントに影響を与えるヘッダーコンポーネントのボタンでクラスを切り替えます

ホットタグ

アーカイブ