【问题标题】:Hide mat-table particular column in responsive device在响应式设备中隐藏 mat-table 特定列
【发布时间】:2021-11-23 18:42:49
【问题描述】:

我正在尝试构建一个响应所有设备的 web 应用程序。我正在使用棱角材料进行设计。在这个特定的组件中,我使用 mat-table 并且我想隐藏 android 设备的票证列。我试过 fxHide fxShow.gt-sm 但它没有用。谁能指导我?

<mat-card>
  <mat-card-content>
    <mat-table [dataSource]="dataSource">
      <!-- User name Definition -->
      <ng-container matColumnDef="ticketnumber">
        <mat-header-cell *matHeaderCellDef> Ticket No. </mat-header-cell>
        <mat-cell *matCellDef="let row"> {{row.ticketnumber}} </mat-cell>
      </ng-container>
    
      <!-- player Definition -->
      <ng-container matColumnDef="player">
        <mat-header-cell *matHeaderCellDef> Player </mat-header-cell>
        <mat-cell *matCellDef="let row"> {{row.player}} </mat-cell>
      </ng-container>
    
      <!-- booked Definition -->
      <ng-container matColumnDef="booked">
        <mat-header-cell *matHeaderCellDef> Booked By </mat-header-cell>
        <mat-cell *matCellDef="let row"> {{row.booked}} </mat-cell>
      </ng-container>
      
 

// I want to hide this particular ticket column below on mobile devices. I have tried using angular flex layout <div fxHide fxShow.gt-sm> but it didn't work. I don't know how to use mediaObserver properly. Can anyone guide me? 
  

<ng-container matColumnDef="tickets">
        <mat-header-cell *matHeaderCellDef> Ticket </mat-header-cell>
        <mat-cell *matCellDef="let row"> {{row.tickets}} </mat-cell>
      </ng-container>
    
      <!-- Header and Row Declarations -->
      <mat-header-row *matHeaderRowDef="displayedColumns"></mat-header-row>
      <mat-row *matRowDef="let row; columns: displayedColumns"></mat-row>
    </mat-table>
  </mat-card-content>
</mat-card>

这是我的 ts 文件。在学习mediaObserver的过程中,我不知道如何正确使用它。

import {Component, OnDestroy, OnInit} from '@angular/core';
import { MediaChange, MediaObserver } from '@angular/flex-layout';
import { Subscription } from 'rxjs';



@Component({
  selector: 'ancode-tickets',
  templateUrl: './tickets.component.html',
  styleUrls: ['./tickets.component.scss']
})
export class TicketsComponent implements OnInit, OnDestroy{
  
  displayedColumns : string[] = ['ticketnumber', 'player', 'booked','tickets'];
  currentScreenWidth: string = '';
  flexMediaWatcher: Subscription;


  dataSource = [{
    ticketnumber : "1",
    player: 25,
    booked: "Admin",
    tickets: [1,2,3,4]
  },
  {
    ticketnumber : "2",
    player: 29,
    booked: "Admin",
    tickets : [5,6,7,8]
  }
]

constructor(private media$: MediaObserver) {
   
};


  ngOnInit(): void {
    this.flexMediaWatcher = this.media$.subscribe((change: MediaChange) => {
      if (change.mqAlias !== this.currentScreenWidth) {
          this.currentScreenWidth = change.mqAlias;
        ;
      }
  });
  }
  ngOnDestroy(): void {
    
  }
}

【问题讨论】:

    标签: angular typescript angular-material angular-flex-layout


    【解决方案1】:

    您可以使用*ngIf

    为此,您必须将 *ngIf 放在 th/td 内的元素上

    【讨论】:

    • 先生能否再给我一些提示?
    • 希望仅当用户是“超级管理员”&lt;ng-container matColumnDef="organization"&gt; &lt;th mat-header-cell *matHeaderCellDef mat-sort-header&gt; &lt;span *ngIf="currentUser?.organization.role == 'superadmin'"&gt;Organization&lt;/span&gt; &lt;/th&gt; &lt;td mat-cell *matCellDef="let element"&gt; &lt;span *ngIf="currentUser?.organization.role == 'superadmin'"&gt;{{element.organization.name ? element.organization.name : '-'}}&lt;/span&gt; &lt;/td&gt; &lt;/ng-container&gt;时才显示组织详细信息
    • 你为什么要把代码放在 cmets 中?编辑答案并在那里添加代码!
    • @R.Richards 我在这里举个例子。我不想更改他的代码。那不是学习。他必须从一个例子中学习。这就是为什么。
    • 你显然不明白我的评论。编辑您的 ANSWER 并将代码放入 ANSWER。不在评论中。
    【解决方案2】:

    仅当用户是“超级管理员”时才希望显示组织详细信息

    <ng-container matColumnDef="organization">       
      <th mat-header-cell *matHeaderCellDef mat-sort-header>         
        <span *ngIf="currentUser?.organization.role == 'superadmin'">
          Organization
        </span>       
      </th>       
      <td mat-cell *matCellDef="let element">            
        <span *ngIf="currentUser?.organization.role == 'superadmin'">
          {{element.organization.name ? element.organization.name : '-'}}
        </span>       
      </td>     
    </ng-container>
    

    【讨论】:

      猜你喜欢
      • 2019-04-07
      • 2022-11-20
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 2016-05-19
      • 1970-01-01
      • 1970-01-01
      • 2016-01-06
      相关资源
      最近更新 更多