在角材料中扩展 [英] Expanding in Angular Material

查看:25
本文介绍了在角材料中扩展的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Angular Material 来显示内容.我的 TS 代码是:

import { Component, OnInit, ViewChild } from '@angular/core';从src/app/services/admin-reassign-task.service"导入 { AdminReassignTaskService }从@angular/common"导入{位置};从@angular/animations"导入{触发器、状态、过渡、动画、样式};@成分({选择器:'app-admin-reassign-task',templateUrl: './admin-reassign-task.component.html',动画:[触发器('详细信息扩展',[state('collapsed', style({height: '0px', minHeight: '0', display: 'none'})),状态('扩展',样式({高度:'*'})),transition('expanded <=>collapsed', animate('225ms cube-bezier(0.4, 0.0, 0.2, 1)')),]),],styleUrls: ['./admin-reassign-task.component.scss']})导出类 AdminReassignTaskComponent 实现 OnInit {重新分配名单;columnsToDisplay = ['test'];@ViewChild('expandedElement') expandElement;displayColumns = ['评论'];任务列表;构造函数(私人服务:AdminReassignTaskService,公共_位置:位置){}ngOnInit() {this.serv.getByURL('admin/list').subscribe(response => {this.reassignedlist=response;})}编辑重新分配(i,元素){const 结果 = [this.reassignedlist.find( ({ id }) => id === i )];this.taskList=result;this.expandedElement = this.expandedElement === 元素?空:元素;}}

我的 HTML 代码是

<ng-容器><div class="mat-elevation-z2 card rounded-0 p-3 d-flex flex-row flex-wrap" ><table mat-table [dataSource]="reassignedlist" multiTemplateDataRows class="mat-elevation-z8 w-100 custom-table"><ng-container matColumnDef="task_name"><th mat-h​​eader-cell *matHeaderCellDef>任务名称</th><td mat-cell *matCellDef="let element">{{element.taskName}} </td></ng-容器><ng-container matColumnDef="action"><th mat-h​​eader-cell *matHeaderCellDef></th><td mat-cell *matCellDef="let element"><button mat-icon-button matTooltip="查看任务" (click)="editReassigned(element.id,element)" ><mat-icon >flag</mat-icon></button></td></ng-容器><ng-container matColumnDef="expandedDetail"><td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplay.length"><div class="example-element-detail" [@detailExpand]="element == expandElement ? 'expanded' : 'collapsed'"><table mat-table [dataSource]="taskList" class="task-card" ><ng-container matColumnDef="comment"><th mat-h​​eader-cell *matHeaderCellDef>分配的用户评论<td mat-cell *matCellDef="let element" matTooltip="分配的用户评论">{{element.assignedUserCmt}} </td></ng-容器><tr mat-row *matRowDef="let row; columns:displayedColumns;"></tr>

</td></ng-容器><tr mat-h​​eader-row *matHeaderRowDef="columnsToDisplay"></tr><tr mat-row *matRowDef="let element; columns: columnsToDisplay;"类=示例元素行"[class.example-expanded-row]="expandedElement === element" ></tr><tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>

</ng-容器>

通过此代码,主表和单击主表中的图标第二个表展开,我可以查看数据.但,1)第二个表不显示标题.这里的错误编码是什么?2) 在 2 Table 之后,我想以这种展开和折叠方式添加一些 4-5 个输入字段.我如何在没有桌子的情况下添加?3)这里附上图像(当前编码的输出).请让我知道任何有答案的人.

解决方案

我认为您需要使用扩展面板作为角材料手风琴的一部分:

https://stackblitz.com/angular/dnbkkoraexxa?file=src%2Fapp%2Fexpansion-overview-example.ts

I am using Angular Material for displaying content. My TS code is:

import { Component, OnInit, ViewChild } from '@angular/core';
import { AdminReassignTaskService } from 'src/app/services/admin-reassign-task.service'
import { Location } from '@angular/common';
import { trigger, state, transition, animate, style } from '@angular/animations';

@Component({
  selector: 'app-admin-reassign-task',
  templateUrl: './admin-reassign-task.component.html',
  animations: [
    trigger('detailExpand', [
      state('collapsed', style({height: '0px', minHeight: '0', display: 'none'})),
      state('expanded', style({height: '*'})),
      transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
    ]),
  ],
  styleUrls: ['./admin-reassign-task.component.scss']
})
export class AdminReassignTaskComponent implements OnInit {
  reassignedlist;
  columnsToDisplay =  ['test'];
  @ViewChild('expandedElement') expandedElement;
  displayedColumns = ['comment'];
  taskList;

  constructor(private serv: AdminReassignTaskService,public _location: Location) { }

  ngOnInit() {
    this.serv.getByURL('admin/list').subscribe(response => {
      this.reassignedlist=response;
    })
  }

  editReassigned(i,element){
    const result = [this.reassignedlist.find( ({ id }) => id === i )];
    this.taskList=result;
    this.expandedElement = this.expandedElement === element ? null : element ;
  }

}

And my HTML Code is

<div class="main-content-wraper">
<ng-container>
      <div class="mat-elevation-z2 card rounded-0 p-3 d-flex flex-row flex-wrap" >
        <table mat-table [dataSource]="reassignedlist" multiTemplateDataRows class="mat-elevation-z8 w-100 custom-table">
          <ng-container matColumnDef="task_name">
            <th mat-header-cell *matHeaderCellDef> Task Name </th>
            <td mat-cell *matCellDef="let element"> {{element.taskName}} </td>
          </ng-container>  
          <ng-container matColumnDef="action">
            <th mat-header-cell *matHeaderCellDef>  </th>
            <td mat-cell *matCellDef="let element"> 
                <button mat-icon-button  matTooltip="View Task" (click)="editReassigned(element.id,element)" ><mat-icon >flag</mat-icon></button>
            </td>
          </ng-container>      

           <ng-container matColumnDef="expandedDetail">
            <td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplay.length">
              <div class="example-element-detail" [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
                  <table mat-table [dataSource]="taskList" class="task-card" >
                      <ng-container matColumnDef="comment">
                        <th mat-header-cell *matHeaderCellDef> Assigned User Comment</th>
                        <td mat-cell *matCellDef="let element" matTooltip="Assigned User Comment"> {{element.assignedUserCmt}} </td>
                      </ng-container>
                      <tr mat-row *matRowDef="let row; columns: displayedColumns;"></tr>
                    </table>
              </div>
            </td>
          </ng-container>     

          <tr mat-header-row *matHeaderRowDef="columnsToDisplay"></tr>
          <tr mat-row *matRowDef="let element; columns: columnsToDisplay;"
              class="example-element-row"
              [class.example-expanded-row]="expandedElement === element" >
          </tr>
          <tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
        </table>    
    </div>
  </ng-container>
</div>

By this code, Main Table and Onclicking ICON in the main table Second table expands and I can View Data. But, 1) 2nd Table not Displaying Heading to it. What is the Wrong Coding Here? 2) After 2 Table I wanted to add some 4-5 Input Field in this Expand and collapse manner. How I can ADD without a table? 3) Here Attached Image (Output of current Coding). Kindly let me know anyone having an answer with you.

解决方案

I think you need to be using expansion panels as part of angular material accordion:

https://stackblitz.com/angular/dnbkkoraexxa?file=src%2Fapp%2Fexpansion-overview-example.ts

这篇关于在角材料中扩展的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
其他开发最新文章
热门教程
热门工具
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆