매트 테이블이 있습니다.
<div class="card-body">
<table mat-table [dataSource]="filteredEntries">
<ng-container matColumnDef="date">
<th mat-header-cell *matHeaderCellDef>Date</th>
<td mat-cell *matCellDef="let dailyEntry">{{dailyEntry.date | date:'shortDate'}}</td>
</ng-container>
// more columns...
<tr mat-header-row *matHeaderRowDef="displayedColumns; sticky: true"></tr>
<tr mat-row *matRowDef="let row; columns:displayedColumns;"
[class.cal-day-selected]="row.date.isSame(selectedDay)"
[class.highlighted-daily-entry]="row === highlightedDailyEntry"
[class.highlight-selected]="dailyEntriesActionQueue.includes(row) && inBackoffice"
(click)="onRowClick($event, row)"></tr>
</table>
</div>
테이블 (또는 매트 행)에 높이를 지정하고 mat-row
필요한 경우 스크롤 가능 하게 만들고 싶습니다 . 그러나 문제는 높이가 mat-table
및 mat-row
. 래퍼 클래스를 추가하여 할 수 있습니다 card-body
.
.card-body {
height: 80vh;
overflow-y: scroll;
}
그러나 그것은 분명히 mat-row
. 적용 overflow-y
및 / 또는 height
에 mat-row
아무것도하지 않습니다. 누구든지 테이블에 높이를 추가하고 높이를 mat-row
초과하는 경우 에만 스크롤 가능 하게 만드는 방법을 알고 있습니까?
편집 : 나는 기본적으로 주석에 게시 된 이 stackblitz 와 똑같이 작동하도록 하고 있습니다. 잘 작동하지만 테이블 맨 위부터 시작하는 스크롤 막대 대신 헤더 다음에 시작하고 싶습니다.
나는 다음과 같이 보이기를 원합니다 (헤더 뒤에서 시작하여 검은 색 막대가 스크롤 막대를 나타냅니다)
현재 머티리얼 테이블 구현으로는이를 수행 할 방법이 없습니다. 그러나 테이블의 헤더 행 요소를 위의 래핑 요소로 이동하여 매우 쉽게 해결할 수 있지만 그렇게 우아하지는 않습니다.
ngAfterViewInit() {
const headerRow = document.querySelector('mat-header-row');
const matTable = document.querySelector('mat-table');
const tableContainer = document.querySelector('.example-container');
if (tableContainer && headerRow && matTable) {
tableContainer.insertBefore(headerRow, matTable);
}
}
그런 다음 CSS 파일에서 래퍼의 오버플로를 숨김으로 설정하고 테이블의 높이를 100 %로 설정하고 오버플로를 자동으로 설정합니다. 또한 래퍼의 플렉스 레이아웃으로 변경했습니다.
.example-container {
height: 400px;
overflow: hidden;
display: flex;
flex-direction: column;
}
mat-table {
width: 100%;
overflow: auto;
height: 100%;
}
또한 속성 대신 재질 테이블 요소를 사용하도록 변경하여 html 테이블 요소를 사용하지 않아도됩니다.
여기에서 작동하는 예를 참조하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다