Điều kiện tiên quyết – Ràng buộc thuộc tính là gì?
Hai điều đầu tiên chúng ta phải hiểu là liên kết và nội suy thuộc tính trong Angular. Hãy lấy thuộc tính
1 của
2 làm ví dụ
Hãy xem xét đoạn mã sau
Cho rằng chúng ta đã xác định
3 trong thành phần, thì tất cả các đoạn mã trên sẽ thực hiện chính xác điều tương tự
Tôi sẽ coi phép nội suy (_______2_______4) là một
5. Và ràng buộc thuộc tính chỉ là một cách ít dài dòng hơn để đạt được điều tương tự. Cá nhân, tôi sử dụng ràng buộc thuộc tính nhiều nhất có thể
ngClass trong góc là gì?
Khi nói đến
8, nó hỗ trợ ba loại biểu thức "trả về giá trị".
7,
8 và
9. Đây là một ví dụ từ
Tất cả các phần tử
10 ? 'red' : 'green'">{{ val }}
0 ở trên đều có hai lớp.
10 ? 'red' : 'green'">{{ val }}
1 và
10 ? 'red' : 'green'">{{ val }}
2. Lưu ý rằng trong tài liệu chính thức, có một cặp dấu nháy đơn trong mỗi khóa đối tượng trong ví dụ thứ ba. Nhưng cả
10 ? 'red' : 'green'">{{ val }}
1 và
10 ? 'red' : 'green'">{{ val }}
2 đều không có dấu gạch ngang hoặc dấu cách trong đó. Vì vậy, chúng tôi có thể thoải mái loại bỏ các dấu ngoặc kép
Tuy nhiên, trong ví dụ thứ tư, vì khóa là
10 ? 'red' : 'green'">{{ val }}
5 (có khoảng trắng ở giữa) nên chúng ta cần thêm dấu nháy đơn
Xin lưu ý - giá trị của
8 không nhất thiết phải là số nguyên, như được hiển thị ở trên. Hãy nhớ rằng ràng buộc thuộc tính đánh giá biểu thức của nó. Vì vậy, miễn là biểu thức có thể được hiểu là
10 ? 'red' : 'green'">{{ val }}
7, chúng ta có thể bắt đầu
Cách sử dụng ngClass trong góc
Vậy biểu thức là gì? . Bạn có thể đã quen thuộc với các câu lệnh
0 chịu trách nhiệm về luồng điều khiển. Lưu ý rằng câu lệnh
0 không có giá trị trả về
Mặt khác, giả sử,
2 là một biểu thức (với điều kiện là
3 có giá trị như
4) và nó có "giá trị trả về" là
5
Trong ECMAScript, phép gán cũng được coi là một
10 ? 'red' : 'green'">{{ val }}
8 và nó có "giá trị trả về". Nhưng chúng ta không thể đặt một biểu thức gán trong liên kết thuộc tính trong Angular, điều này sẽ gây ra lỗi nói rằng "Các ràng buộc không thể chứa các phép gán"
Như đã nói, tất cả các
7 sau đây đều hợp lệ
Cách sử dụng ngClass góc với một điều kiện đơn giản
Chúng tôi không thể viết một tuyên bố
0 trong
8, do thực tế đó là một tuyên bố. Nhưng chúng ta không thể sử dụng toán tử bậc ba vì đây là một biểu thức
Ví dụ: nếu chúng tôi muốn văn bản trong một ô của bảng có lớp là
0 khi giá trị của nó lớn hơn
1 và nếu không thì nó phải có lớp là
2, đây là mã
10 ? 'red' : 'green'">{{ val }}
Và nếu chúng ta muốn chuyển đổi một lớp dựa trên một điều kiện, chúng ta có thể biến một trong các biểu thức thành một chuỗi rỗng
Ví dụ: nếu chúng tôi muốn thêm một lớp
3 vào một biểu mẫu khi nó không hợp lệ và xóa lớp
3 khi nó hợp lệ, chúng tôi có thể làm điều này
Nhưng có một cách ít dài dòng hơn. Hãy nhớ rằng
8 cũng hỗ trợ một đối tượng như một giá trị
Một cách khác để đạt được điều tương tự là sử dụng. Đây là lý tưởng cho một lớp duy nhất
Cách làm việc với Object Literals và ngClass
Khi chúng ta sử dụng các đối tượng theo nghĩa đen, thì
6 đại diện cho
7 mà chúng ta sẽ định cấu hình cho phần tử, trong khi
8 biểu thị liệu lớp có nên được áp dụng cho phần tử hay không
Lưu ý rằng
6 sẽ chỉ được áp dụng khi
8 là
1. Trong ví dụ trên, nếu
2 là một trong số
3,
4,
5, v.v., thì lớp của
3 sẽ không áp dụng cho phần tử
Một điều nữa cần lưu ý là cú pháp chưa được hỗ trợ. Nhưng có một vấn đề mở trong repo GitHub chính thức của Angular
Angular ngClass và điều kiện phức tạp
Nếu điều kiện không chỉ là
7 thì sao?
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
Như đã đề cập ở trên, chúng ta không thể sử dụng câu lệnh
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
2 trong
8. Nhưng chờ đã,
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
5 là một biểu thức hợp lệ có giá trị trả về và chúng ta có thể sử dụng câu lệnh
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
2 trong một
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
5
class MyComponent {
getClassOf(val) {
if (val >= 0 && val <= 5) {
return 'low';
} else if (val > 5 && val <= 10) {
return 'medium';
} else {
return 'high'
}
}
}
{{ val }}
Càng xa càng tốt. Nhưng tôi muốn chỉ ra rằng điều này thực sự không lý tưởng. Tóm lại, do cách thức hoạt động của
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
8 trong Angular, hàm trên
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
9 có thể chạy nhiều lần, ngay cả khi chúng tôi cho rằng nó không cần thiết
Điều đó nằm ngoài chủ đề của bài viết này, nhưng bạn có thể xem bài viết này nếu bạn muốn biết thêm
Chúng tôi vẫn có thể đạt được kết quả tương tự mà không cần sử dụng
if (val >= 0 && val <= 5) {
return 'low';
} else if (val >= 6 && val <= 10) {
return 'medium';
} else {
return 'high'
}
5. Với một đối tượng theo nghĩa đen, nó trông như thế này
0
Có vẻ hơi dài dòng. Hãy xem xét rằng sẽ chỉ có một lớp được áp dụng cho phần tử, vì vậy nếu chúng ta có thể biến đổi
8 của mình trước thì đó là điều lý tưởng
1
Và tất cả những gì chúng ta cần làm trong mẫu là
2
Có một số trường hợp chúng ta có thể sử dụng mảng. Xét quan hệ ánh xạ sau
3
Điều này có nghĩa là đối với một
8 là
4, lớp của phần tử sẽ là
class MyComponent {
getClassOf(val) {
if (val >= 0 && val <= 5) {
return 'low';
} else if (val > 5 && val <= 10) {
return 'medium';
} else {
return 'high'
}
}
}
4. Khi chúng tôi thấy các số liên tiếp như
4,
class MyComponent {
getClassOf(val) {
if (val >= 0 && val <= 5) {
return 'low';
} else if (val > 5 && val <= 10) {
return 'medium';
} else {
return 'high'
}
}
}
6 và
class MyComponent {
getClassOf(val) {
if (val >= 0 && val <= 5) {
return 'low';
} else if (val > 5 && val <= 10) {
return 'medium';
} else {
return 'high'
}
}
}
7, thì chúng tôi có thể xem xét sử dụng một mảng. Điều này là do bằng cách trừ đi
4 từ mỗi giá trị, chúng tôi nhận được
class MyComponent {
getClassOf(val) {
if (val >= 0 && val <= 5) {
return 'low';
} else if (val > 5 && val <= 10) {
return 'medium';
} else {
return 'high'
}
}
}
9,
4 và
class MyComponent {
getClassOf(val) {
if (val >= 0 && val <= 5) {
return 'low';
} else if (val > 5 && val <= 10) {
return 'medium';
} else {
return 'high'
}
}
}
6, đây chỉ là các chỉ số của một mảng
4_______0_______5
Một sự thật thú vị là trong ECMAScript, một mảng chỉ là một đối tượng với khá nhiều thuộc tính và phương thức bổ sung. Vì vậy, bạn cũng có thể làm như trên với một đối tượng
6_______0_______7
Lưu ý rằng bạn cũng có thể đạt được điều trên với các toán tử bậc ba lồng nhau, đây là điều mà tôi luôn cố gắng tránh
[ngClass] so với [class] trong Góc
Trước khi chúng tôi kết thúc, một điều đáng nói là ký hiệu
{{ val }}
2. Điều này có sẵn bắt đầu từ
{{ val }}
3, được giới thiệu trong Angular 9 dưới dạng trình biên dịch và thời gian chạy mặc định
{{ val }}
2 gần như tương thích ngược với
7, với một số khác biệt
{{ val }}
6 hoạt động, nhưng
{{ val }}
7 sẽ không hoạt động. Xem vấn đề mở này
Giá trị của
{{ val }}
2 không phải là "deepwatched". Xem tại đây
Phần kết luận
Cảm ơn vì đã đọc. Hy vọng bây giờ bạn đã biết cách thức hoạt động của
8 và có thể tự tin sử dụng nó
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Xing Liu
Đọc thêm bài viết
Nếu bài viết này hữu ích, hãy tweet nó
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu
Làm cách nào để thêm một lớp CSS trong Angular?
Cách gán một lớp CSS trong Angular bằng cách sử dụng liên kết thuộc tính [className] . Angular, giống như các khung ứng dụng trang đơn khác, thực sự tỏa sáng khi liên kết dữ liệu. Điều đó có nghĩa là DOM được tự động cập nhật bất cứ khi nào đối tượng JavaScript tương ứng thay đổi. Điều này cũng tương tự đối với các lớp CSS.
Làm cách nào để thêm lớp CSS trong TypeScript?
Cách thêm lớp vào phần tử trong TypeScript. .
Chọn phần tử
Sử dụng danh sách lớp. phương thức add() để thêm một lớp vào phần tử
Phương thức thêm lớp được cung cấp vào phần tử nếu nó chưa có
Làm cách nào để truy cập lớp CSS trong TypeScript?
Cách đặt kiểu CSS cho một phần tử trong TypeScript. .
Chọn phần tử cụ thể
Đặt thuộc tính trên đối tượng kiểu của phần tử để cập nhật kiểu của nó
Ví dụ, e. Phong cách. nềnColor = 'vôi'
Làm cách nào để thêm lớp CSS dựa trên điều kiện trong Angular?
Để thêm một lớp có điều kiện trong Angular, chúng ta có thể truyền một đối tượng cho ngClass trong đó khóa là tên lớp và giá trị là điều kiện i. e. , đúng hay sai như hình bên dưới. Và trong đoạn mã trên, tên lớp sẽ chỉ được thêm khi điều kiện là đúng.