angular / angular/components

bug(mat-text-column): Column-name based CSS ignored unless view encapsulation is disabled

Đang mở
#24,893 3 bình luận 2 reaction 0 người được giao Xem trên GitHub
area: material/table P4
Ngôn ngữ chính
TypeScript
Star
25k
Fork
6.8k
Merge trung bình
1 ngày 8 giờ
Pull request đã merge (30 ngày)
91

Mô tả

### Is this a regression?

- [ ] Yes, this behavior used to work in the previous version

### The previous version in which this bug was not present was

_No response_

### Description

May not technically be a bug, and more of an undocumented quirk.

There are two aspects to mat-table column definitions that lead to an unexpected conclusion:

- For a column named `foo`, you can define a `.mat-column-foo` style which will get applied to it.
- A `mat-text-column` named `foo` is shorthand for an explicit matColumnDef with sensible defaults for a text-only field.

However, if you define said style, and try to apply it to a mat-text-column, it won't match.

I supppose that technically, the affected th/td elements are no longer generated by the parent view, but by mat-text-node itself - and thus, those are outside the scope of view-encapsulated styles defined there.

The fix may not be trivial, but it might still be worth documenting as a gotcha.

### Reproduction

See StackBlitz [here](https://stackblitz.com/edit/components-issue-e4h1lq?file=src/app/example-component.ts). By making the component non-encapsulated, the style applies to both columns. Otherwise, it only matches the explicitly defined one, not the text-column.

### Expected Behavior

Styles affect matColumnDefs and mat-text-columns the same way.

### Actual Behavior

...they don't!

### Environment

Angular CLI: 13.3.5
Node: 14.17.6
Package Manager: yarn 1.22.15
OS: win32 x64

Angular: 13.3.6

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Hướng nghiên cứu

Bắt đầu với bản tái hiện StackBlitz được liên kết và kiểm tra src/app/example-component.ts, so sánh matColumnDef được định nghĩa rõ ràng với mat-text-column trong view encapsulation. Xác nhận sự không khớp về kiểu và xác định liệu kết quả mong muốn là sửa component hay ghi lại tài liệu về hành vi này; được xem là hoàn tất khi hai loại cột nhận được các kiểu tương đương hoặc giới hạn này được ghi lại.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
angular, typescript
Lĩnh vực
frontend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
38/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.