NgĐối với InternalHTML
Angular cung cấp một vài chỉ thị tích hợp. Nhưng không phải tất cả chúng đều được áp dụng theo cùng một cách. Ví dụ: 62 được áp dụng như một thuộc tính HTML bình thường. Mặt khác, các chỉ thị cấu trúc như 63 hoặc 64 được sử dụng với dấu hoa thị ở đầu ( 65) Show
Tải xuống phiên bản có thể in. Phản ứng (PDF, 0. 9MB), Vue. js (PDF, 0. 7MB), Góc (PDF, 0. 7MB) ReactVueAngular
outputting data into HTML
outputting data into HTML attributes
outputting HTML
0 1iterating over data sets 2 3 4iterating over data sets with index 5 6 7rendering conditional markup 8 9 0rendering conditional markup including else branch 1 2 2adding standard class attribute 4 4 4passing data to child components Một thẻ đã tồn tại với tên chi nhánh được cung cấp. Nhiều lệnh Git chấp nhận cả tên thẻ và tên nhánh, vì vậy việc tạo nhánh này có thể gây ra hành vi không mong muốn. Bạn có chắc chắn muốn tạo nhánh này không? Hành vi này bạn đang nhận được là bình thường. Lớp được thêm vào 66 bị bỏ qua vì theo mặc định, đóng gói là 67. Điều đó có nghĩa là Angular ngăn các kiểu chặn bên trong và bên ngoài thành phần. Bạn nên thay đổi đóng gói thành 68 trong thành phần của mình. Bằng cách này, bạn sẽ có thể định nghĩa các lớp ở bất cứ đâu bạn muốn. bên trong 69 hoặc trong một biểu định kiểu 70, 71 hoặc 72 riêng biệt (không thành vấn đề) và Angular sẽ tự động thêm chúng vào DOM 7 Angular là một khung nguồn mở dựa trên TypeScript được sử dụng để phát triển các ứng dụng web giao diện người dùng. Nó là sự kế thừa của AngularJS và tất cả các đề cập đến Angular đều đề cập đến các phiên bản 2 trở lên. Angular có các tính năng như chung chung, gõ tĩnh và một số tính năng ES6 Phiên bảnLịch sửGoogle đã phát hành phiên bản đầu tiên của AngularJS vào ngày 20 tháng 10 năm 2010. Bản phát hành ổn định của AngularJS là vào ngày 18 tháng 12 năm 2017, phiên bản 1. 6. 8. Bản phát hành quan trọng cuối cùng của AngularJS, phiên bản 1. 7, diễn ra vào ngày 1 tháng 7 năm 2018 và hiện đang trong giai đoạn Hỗ trợ dài hạn 3 năm. góc 2. 0 lần đầu tiên được công bố vào ngày 22 tháng 9 năm 2014, tại hội nghị ng-Châu Âu. Một tính năng mới của Angular 2. 0 là tải động và hầu hết các chức năng cốt lõi đã được chuyển sang các mô-đun Sau một số sửa đổi, Angular 4. 0 được phát hành vào tháng 12 năm 2016. Angular 4 tương thích ngược với Angular 2. 0 và một số tính năng mới là thư viện HttpClient và các sự kiện vòng đời bộ định tuyến mới. Angular 5 được phát hành vào ngày 1 tháng 11 năm 2017, một tính năng chính là hỗ trợ các ứng dụng web lũy tiến. Angular 6 được phát hành vào tháng 5 năm 2018 và Angular 7 vào tháng 10 năm 2018. Phiên bản ổn định mới nhất là 7. 0. 0 cài đặtCách dễ nhất để cài đặt Angular là thông qua Angular CLI. Công cụ này cho phép tạo các dự án mới và tạo các thành phần, dịch vụ, mô-đun, v.v. theo tiêu chuẩn mà nhóm Angular coi là phương pháp hay nhất góc 2. x trở lênCài đặt CLI góc8 Tạo không gian làm việc và ứng dụng ban đầuBạn phát triển ứng dụng trong bối cảnh không gian làm việc Góc. Một không gian làm việc chứa các tệp cho một hoặc nhiều dự án. Dự án là tập hợp các tệp bao gồm một ứng dụng, thư viện hoặc các bài kiểm tra đầu cuối (e2e) 9 Phục vụ ứng dụngAngular bao gồm một máy chủ để bạn có thể dễ dàng xây dựng và phân phát ứng dụng của mình cục bộ
Khởi chạy máy chủ bằng cách sử dụng lệnh CLI 06 với tùy chọn 07 3 Hoan hô, bạn đã tạo ứng dụng góc cạnh đầu tiên của mình các thành phầnGóc chứa nhiều sơ đồ để xây dựng ứng dụng. Các thành phần là một trong những sơ đồ như vậy. Chúng bao gồm một đơn vị logic liên quan đến một phần duy nhất của ứng dụng. Các thành phần thường hợp tác với các sơ đồ khác để hoạt động hiệu quả hơn Các thành phần đơn giản hóa ứng dụng. Đưa logic vào một phần duy nhất của giao diện hiển thị là mục tiêu chính của họ. Để xây dựng ứng dụng từng bước, bạn phải xây dựng từng thành phần. Rốt cuộc, các thành phần hoạt động như các khối xây dựng của Angular Lớp thành phần và siêu dữ liệuLệnh CLI 08 mang lại kết quả như sau 0 Đây là bộ xương cơ bản mà từ đó tất cả các thành phần tuyệt vời bắt nguồn. Trình trang trí 09 là phần quan trọng nhất. Không có nó, ví dụ trên trở thành một lớp chung. Góc dựa vào các bộ trang trí để phân biệt loại sơ đồ của một lớp 09 nhận siêu dữ liệu dưới dạng một đối tượng. Trình trang trí chỉ là các chức năng JavaScript dưới mui xe. Họ đưa ra các đối số như với đối tượng siêu dữ liệu. Đối tượng siêu dữ liệu định cấu hình các phụ thuộc cơ bản của thành phần. Mỗi lĩnh vực đóng một vai trò
Hãy nghĩ về siêu dữ liệu như một khối cấu hình lớn. Trình trang trí lấy nó để nó có thể tạo dữ liệu cụ thể cho thành phần. Trình trang trí trang trí lớp bên dưới với dữ liệu cần thiết cho hành vi của lớp đó. Một lớp thành phần Xuất chữ ký của lớp theo mặc định để thành phần có thể được nhập. 84 cũng được triển khai. 85 yêu cầu lớp xác định các phương thức nhất định theo định nghĩa của giao diện. 84 là móc vòng đời dữ liệu thành phầnDữ liệu thúc đẩy mọi thứ. Linh kiện cũng không ngoại lệ. Các thành phần gói gọn tất cả dữ liệu của chúng. Để nhận dữ liệu từ bên ngoài, một thành phần phải khai báo nó một cách rõ ràng. Hình thức bảo mật này giúp thông tin không bị xung đột trên cây thành phần Dữ liệu xác định những gì được hiển thị từ lớp thành phần đến mẫu của nó. Mọi cập nhật đối với dữ liệu của lớp sẽ (hoặc ít nhất nên) cập nhật hiển thị mẫu Các thành phần thường sẽ khởi tạo một tập hợp các thành viên (hoặc biến) lưu trữ dữ liệu. Chúng được sử dụng trong toàn bộ logic lớp thành phần để thuận tiện. Thông tin này cung cấp logic dẫn đến mẫu và hành vi của nó. Xem ví dụ sau 8 5 Lưu ý cách thành phần tương tác với dữ liệu của nó. Đầu tiên, nó tìm nạp nó từ 87 trước khi bắt đầu chuyển tiếp nó tới mẫu để hiển thị Dữ liệu hiển thị xuyên suốt mẫu. Bên trong dấu ngoặc nhọn kép, giá trị của một biến được ánh xạ từ lớp thành phần vào dấu ngoặc nhọn. Các vòng lặp 88 trên mảng lớp 89. Nhấp vào nút sẽ xóa một phần tử cụ thể khỏi 89 theo chỉ mục của nó. Bạn thậm chí có thể thay đổi 51 trên cùng bằng cách nhập vào hộp nhập liệu Các tương tác trên làm thay đổi dữ liệu của lớp thành phần, từ đó cập nhật HTML mẫu của thành phần. Các thành phần cung cấp logic xương sống tạo điều kiện thuận lợi cho luồng dữ liệu. HTML mẫu làm cho dữ liệu đó có thể đọc được cho người dùng Ràng buộc dữ liệuDữ liệu thường xác định giao diện của một ứng dụng. Diễn giải dữ liệu đó vào giao diện người dùng liên quan đến logic lớp ( 52) và chế độ xem mẫu ( 53). Góc kết nối chúng thông qua liên kết dữ liệu. Hãy nghĩ về liên kết dữ liệu như một công cụ để tương tác thành phần Thành phần và MẫuThành phần lưu trữ hầu hết logic và dữ liệu của nó bên trong lớp được trang trí bằng 09. Trình trang trí này định nghĩa lớp là một thành phần với HTML mẫu. Mẫu của thành phần đại diện cho lớp trong ứng dụng. Trọng tâm ở đây cần nằm giữa lớp của thành phần và HTML mẫu Đây là nơi liên kết dữ liệu xảy ra. Các thuộc tính và sự kiện của phần tử nhận các giá trị được gán. Các giá trị này, được định nghĩa bởi lớp thành phần, phục vụ một trong hai vai trò. Một là tạo dữ liệu mà mẫu sau đó nhận được. Cái còn lại xử lý các sự kiện được phát ra bởi phần tử mẫu Thuộc tính vật phẩmĐể nhận ra các thuộc tính phần tử giới hạn dữ liệu, Angular sử dụng cú pháp dấu ngoặc đặc biệt 4 5 Chịu đựng tôi về điều này 55 phản chiếu thuộc tính trong nút đối tượng của phần tử Mô hình đối tượng miền (DOM). Đừng nhầm lẫn các thuộc tính của đối tượng với các thuộc tính của phần tử DOM. Các thuộc tính và thuộc tính thường có cùng tên và làm cùng một việc. Tuy nhiên có một sự phân biệt rõ ràng Hãy nhớ rằng 56 (thuộc tính) là một thuộc tính duy nhất của đối tượng DOM bên dưới. Nó được khai báo khi khởi tạo DOM với các giá trị thuộc tính khớp với định nghĩa của phần tử. Nó duy trì cùng một giá trị sau đó. Mỗi thuộc tính có trường khóa-giá trị riêng trong nút đối tượng DOM. Các thuộc tính này có thể thay đổi sau khi khởi tạo Biết sự khác biệt giữa thuộc tính và thuộc tính. Nó sẽ dẫn đến sự hiểu biết tốt hơn về cách Angular liên kết dữ liệu với các thuộc tính (ràng buộc thuộc tính). Angular sẽ hiếm khi liên kết dữ liệu với các thuộc tính của phần tử. Ngoại lệ cho điều này là rất hiếm. Một lần cuối. Góc liên kết dữ liệu thành phần với thuộc tính, không phải thuộc tính Nhắc lại ví dụ, 57 trong phép gán thuộc tính của phần tử có ý nghĩa đặc biệt. Dấu ngoặc cho thấy rằng 58 bị ràng buộc với 59 ở bên phải của phép gán 40 cũng có ý nghĩa đặc biệt trong ngữ cảnh của dấu ngoặc. Bản thân 40 là một chuỗi ký tự. Góc đọc nó và khớp giá trị của nó với các thành viên lớp thành phần. Góc sẽ thay thế giá trị của thuộc tính thành viên phù hợp. Tất nhiên, điều này đề cập đến cùng một lớp thành phần lưu trữ mẫu HTML Luồng dữ liệu một chiều từ thành phần này sang mẫu khác đã hoàn tất. Thành viên phù hợp với chuyển nhượng quyền của thuộc tính trong ngoặc cung cấp 40. Lưu ý rằng những thay đổi đối với giá trị của thành viên trong lớp thành phần thấm xuống mẫu. Đó là phát hiện thay đổi của Angular tại nơi làm việc. Các thay đổi trong phạm vi của mẫu không ảnh hưởng đến thành viên lớp thành phần Chìa khóa lấy đi. lớp thành phần cung cấp dữ liệu trong khi mẫu hiển thị nó Tôi đã không đề cập đến việc các giá trị dữ liệu cũng có thể hiển thị trong 43 của một thành phần. Ví dụ cuối cùng này thực hiện dấu ngoặc nhọn kép. Góc nhận ra các dấu ngoặc nhọn này và nội suy dữ liệu lớp thành phần phù hợp vào 43 của 45 7 Xử lý sự kiệnNếu thành phần cung cấp dữ liệu, thì mẫu cung cấp sự kiện 8 90 Điều này hoạt động tương tự như ràng buộc tài sản 46 liên quan đến bất kỳ loại sự kiện hợp lệ nào. Ví dụ: một trong những loại sự kiện phổ biến nhất là 47. Nó phát ra khi bạn nhấp chuột. Bất kể loại nào, 48 bị ràng buộc với 49 trong ví dụ. Trình xử lý sự kiện thường là các hàm thành viên của lớp thành phần 50 đặc biệt đối với Angular. Dấu ngoặc đơn nói với Angular một sự kiện được giới hạn với sự phân công đúng của 51. Bản thân sự kiện bắt nguồn từ phần tử máy chủ Khi sự kiện phát ra, nó sẽ chuyển đối tượng Sự kiện ở dạng 52. 51 ánh xạ tới hàm 51 có tên giống hệt của lớp thành phần. Quá trình trao đổi một chiều từ phần tử giới hạn sự kiện sang lớp thành phần đã hoàn tất Phát ra các sự kiện từ trình xử lý, trong khi có thể, không ảnh hưởng đến phần tử mẫu. Rốt cuộc thì ràng buộc là một chiều chỉ thịChỉ thị là các thành phần và thuộc tính thành phần được tạo và nhận dạng bởi Angular. Góc liên kết phần tử hoặc thuộc tính với định nghĩa lớp tương ứng của nó. 55 hoặc 09 trang trí các lớp này. Cả hai đều là biểu thị cho Angular mà lớp thực hiện như một chỉ thị Một số chỉ thị sửa đổi phong cách của phần tử máy chủ. Các lệnh khác hiển thị chế độ xem hoặc chèn vào chế độ xem hiện có dưới dạng chế độ xem được nhúng. Nói cách khác, chúng thay đổi bố cục HTML Trong mọi trường hợp, các lệnh báo hiệu trình biên dịch Angular. Họ đánh dấu các thành phần để sửa đổi tùy thuộc vào logic lớp của chỉ thị chỉ thị kết cấuDưới đây là ba ví dụ về chỉ thị cấu trúc. Mỗi người có một đối tác hợp lý (______557, 58, và 59)
Lưu ý quan trọng. cả ba đều có sẵn thông qua nhập khẩu 70. Nó có sẵn từ 71 để nhập trong mô-đun gốc của ứng dụng *ngNếu72 kiểm tra một giá trị đã cho để xem giá trị đó là đúng hay sai dựa trên đánh giá boolean chung trong JavaScript. Nếu đúng, phần tử và HTML bên trong của nó sẽ hiển thị. Mặt khác, chúng không bao giờ kết xuất với Mô hình đối tượng miền (DOM) 91 Đây là một ví dụ giả tạo. Bất kỳ giá trị thành viên nào từ lớp thành phần của mẫu có thể được thay thế cho 73 hoặc 74 CẤP. Bạn cũng có thể làm điều sau với *ngIf để có quyền truy cập vào giá trị có thể quan sát được 92 *ngDành cho88 vòng lặp dựa trên biểu thức vi cú pháp được chỉ định bên phải. Microsyntax vượt ra ngoài phạm vi của bài viết này. Biết rằng cú pháp vi mô là một dạng biểu thức logic ngắn. Nó xuất hiện dưới dạng một chuỗi duy nhất có khả năng tham chiếu các giá trị thành viên của lớp. Nó có thể lặp lại các giá trị có thể lặp lại, điều này làm cho nó hữu ích cho 88 93 77 là một giá trị có thể lặp lại. Mảng là một trong những iterable phổ biến nhất. 88 tạo ra một 79 mới cho mỗi phần tử mảng. Mỗi phần tử mảng được gán biến 80. Tất cả điều này được thực hiện bằng cách sử dụng microsyntax. 88 xác định nội dung cấu trúc của phần tử 82. Đó là đặc điểm của một chỉ thị cấu trúc CẤP. Bạn cũng có thể làm điều sau với chỉ thị *ngFor để có quyền truy cập vào giá trị có thể quan sát được (hacky) 94 *ngSwitchCase và *ngSwitchDefaultHai chỉ thị cấu trúc này phối hợp với nhau để cung cấp chức năng 59 cho HTML mẫu 95 Chỉ một trong các biểu thức 84 hiển thị. Lưu ý thuộc tính 85 bên trong phần tử 45 bao bọc công tắc. Điều này vượt qua giá trị của 80 dọc theo chuỗi 88. Chuỗi chỉ thị cấu trúc này xác định phần tử 89 nào hiển thị Như vậy, 85 không phải là một chỉ thị cấu trúc không giống như các câu lệnh 84. Nó chuyển giá trị trong khi khối chuyển đổi xác định bố cục cuối cùng của HTML Hãy nhớ rằng cách điệu và truyền giá trị không phải là trách nhiệm của các chỉ thị cấu trúc. Điều đó liên quan đến chỉ thị thuộc tính. Các chỉ thị cấu trúc chỉ xác định bố cục đường ốngChuyển đổi dữ liệu đầu ra đảm bảo dữ liệu ở định dạng mong muốn khi tải lên màn hình của người dùng. Thông thường dữ liệu biến đổi đằng sau hậu trường. Với đường ống, việc chuyển đổi dữ liệu có thể diễn ra trong HTML mẫu. Đường ống trực tiếp chuyển đổi dữ liệu mẫu Ống nhìn đẹp và tiện lợi. Chúng giúp giữ cho lớp của thành phần dựa trên các phép biến đổi cơ bản. Nói một cách kỹ thuật, các đường ống đóng gói logic chuyển đổi dữ liệu trường hợp sử dụngAngular được đóng gói sẵn với một bộ đường ống cơ bản. Làm việc với một vài người trong số họ sẽ phát triển trực giác để xử lý phần còn lại. Danh sách sau đây cung cấp ba ví dụ
không đồng bộPhần này yêu cầu hiểu biết cơ bản về lời hứa hoặc quan sát để đánh giá đầy đủ. AsyncPipe hoạt động trên một trong hai. AsyncPipe trích xuất dữ liệu từ Promises/Observables làm đầu ra cho bất cứ điều gì xảy ra tiếp theo Trong trường hợp của Đài quan sát, Async Pipe tự động đăng ký nguồn dữ liệu. Bất kể dữ liệu đến từ đâu, AsyncPipe đăng ký nguồn có thể quan sát được. 902 là tên cú pháp của AsyncPipe như hình bên dưới 96 Trong ví dụ, 903 là một Observable đang chờ tải khoai tây lên. Khi khoai tây đến, đồng bộ hoặc không đồng bộ, AsyncPipe sẽ nhận chúng dưới dạng một mảng có thể lặp lại. Phần tử danh sách sau đó lấp đầy bằng khoai tây NgàyỐngĐịnh dạng chuỗi ngày mất một chút hack với đối tượng JavaScript 904. DatePipe cung cấp một cách mạnh mẽ để định dạng ngày với giả định đầu vào đã cho là định dạng thời gian hợp lệ Tiêu ĐềTrường HợpỐngChuyển đổi văn bản thành trường hợp tiêu đề. Viết hoa chữ cái đầu tiên của mỗi từ và chuyển phần còn lại của từ thành chữ thường. Các từ được phân tách bằng bất kỳ ký tự khoảng trắng nào, chẳng hạn như dấu cách, tab hoặc ký tự xuống dòng 97____298 Định dạng của 905 ở trên là ISO 86011—không phải là định dạng dễ đọc nhất. DatePipe ( 906) chuyển đổi định dạng ngày ISO thành một 907 thông thường hơn. Có nhiều tùy chọn định dạng khác. Tất cả các tùy chọn này đều có trong tài liệu chính thức Tạo đường ốngTrong khi Angular chỉ có một số đường ống nhất định, trình trang trí 908 cho phép các nhà phát triển tạo ra các đường ống của riêng họ. Quá trình bắt đầu với 909, thay thế 910 bằng tên tệp thích hợp hơn. Lệnh này mang lại như sau 99 Mẫu đường ống này đơn giản hóa việc tạo đường ống tùy chỉnh. Trình trang trí 908 nói với Angular rằng lớp là một đường ống. Giá trị của 912, trong trường hợp này là 913, là giá trị mà Angular nhận ra khi quét HTML mẫu cho các đường dẫn tùy chỉnh Về logic lớp. Việc triển khai 914 cung cấp hướng dẫn cho hàm 915. Hàm này có ý nghĩa đặc biệt trong ngữ cảnh của trình trang trí 908. Nó nhận được hai tham số theo mặc định 917 là đầu ra mà đường ống nhận được. Nghĩ về 918. Giá trị của someValue được chuyển đến tham số 917 của hàm 915. Đây là hàm 915 tương tự được định nghĩa trong lớp ExamplePipe 922 là bất kỳ đối số nào mà đường ống tùy ý nhận. Hãy nghĩ về 923. 924 có thể được thay thế bằng bất kỳ một giá trị nào. Giá trị này được chuyển đến tham số 922 của hàm 915. Tức là hàm 915 được định nghĩa trong lớp của ExamplePipe Bất kể hàm nào trả về ( 928) đều trở thành đầu ra của thao tác đường ống. Hãy xem ví dụ tiếp theo để xem một ví dụ hoàn chỉnh về ExamplePipe. Tùy thuộc vào biến mà đường ống nhận được, đầu vào là chữ hoa hoặc chữ thường dưới dạng đầu ra mới. Đối số không hợp lệ hoặc không tồn tại sẽ khiến đường ống trả về cùng một đầu vào với đầu ra 30 31 32 móc vòng đờiLifecycle hooks là các phương thức tính thời gian. Chúng khác nhau về thời điểm và lý do chúng thực thi. Phát hiện thay đổi kích hoạt các phương pháp này. Chúng thực hiện tùy thuộc vào các điều kiện của chu kỳ hiện tại. Angular chạy phát hiện thay đổi liên tục trên dữ liệu của nó. Móc vòng đời giúp quản lý hiệu ứng của nó Một khía cạnh quan trọng của các hook này là thứ tự thực hiện của chúng. Nó không bao giờ đi chệch hướng. Chúng thực thi dựa trên một loạt các sự kiện tải có thể dự đoán được tạo ra từ một chu kỳ phát hiện. Điều này làm cho chúng có thể dự đoán được. Một số nội dung chỉ khả dụng sau khi một hook nhất định thực thi. Tất nhiên, hook chỉ thực thi trong một số điều kiện nhất định được đặt trong chu kỳ phát hiện thay đổi hiện tại Theo thứ tự thực hiệnngOnChanges929 kích hoạt sau khi sửa đổi thành viên lớp bị ràng buộc 930. Dữ liệu bị ràng buộc bởi trình trang trí 931 đến từ một nguồn bên ngoài. Khi nguồn bên ngoài già đi dữ liệu đó theo cách có thể phát hiện được, nó sẽ chuyển qua thuộc tính 930 một lần nữa Với bản cập nhật này, 929 ngay lập tức kích hoạt. Nó cũng kích hoạt khi khởi tạo dữ liệu đầu vào. Móc nhận một tham số tùy chọn thuộc loại 934. Giá trị này chứa thông tin về các thuộc tính giới hạn đầu vào đã thay đổi ngOnInit84 kích hoạt một lần khi khởi tạo thuộc tính giới hạn đầu vào ( 930) của một thành phần. Ví dụ tiếp theo sẽ giống như ví dụ trước. Móc không kích hoạt khi ChildComponent nhận dữ liệu đầu vào. Thay vào đó, nó kích hoạt ngay sau khi dữ liệu hiển thị thành mẫu ChildComponent ngDoCheck937 kích hoạt với mọi chu kỳ phát hiện thay đổi. Phát hiện thay đổi chạy góc thường xuyên. Thực hiện bất kỳ hành động nào sẽ khiến nó quay vòng. 937 cháy với các chu kỳ này. Sử dụng nó một cách thận trọng. Nó có thể tạo ra các vấn đề về hiệu suất khi triển khai không chính xác 937 cho phép nhà phát triển kiểm tra dữ liệu của họ theo cách thủ công. Họ có thể kích hoạt một ngày nộp đơn mới một cách có điều kiện. Cùng với 940, nhà phát triển có thể tạo kiểm tra của riêng họ để phát hiện thay đổi ngafterContentInit941 kích hoạt sau khi khởi tạo DOM nội dung của thành phần (tải lần đầu tiên). Đang chờ truy vấn 942 là trường hợp sử dụng chính của hook 942 truy vấn mang lại tham chiếu phần tử cho nội dung DOM. Như vậy, chúng không khả dụng cho đến sau khi tải DOM nội dung. Do đó tại sao 941 và đối tác của nó là 945 được sử dụng ngafterContentChecked945 kích hoạt sau mỗi chu kỳ phát hiện thay đổi nhắm mục tiêu DOM nội dung. Điều này cho phép các nhà phát triển tạo điều kiện thuận lợi cho cách DOM nội dung phản ứng với phát hiện thay đổi. 945có thể cháy thường xuyên và gây ra các vấn đề về hiệu suất nếu triển khai kém 945 cũng kích hoạt trong giai đoạn khởi tạo của một thành phần. Nó đến ngay sau 941 ngAfterViewInit950 kích hoạt một lần sau khi chế độ xem DOM khởi tạo xong. Chế độ xem luôn tải ngay sau nội dung. 950 chờ truy vấn của 952 giải quyết. Các phần tử này được truy vấn từ trong cùng một chế độ xem của thành phần Trong ví dụ bên dưới, tiêu đề 953 của BComponent được truy vấn. 950 thực thi ngay khi có kết quả của truy vấn ngAfterViewChecked955 kích hoạt sau bất kỳ chu kỳ phát hiện thay đổi nào nhắm vào chế độ xem của thành phần. Móc 955 cho phép các nhà phát triển hỗ trợ cách phát hiện thay đổi ảnh hưởng đến chế độ xem DOM ngOnDestroy957 kích hoạt khi xóa thành phần khỏi chế độ xem và DOM tiếp theo. Móc này cung cấp cơ hội để làm sạch bất kỳ kết thúc lỏng lẻo nào trước khi xóa một thành phần lượt xemLượt xem gần giống như DOM ảo của riêng họ. Mỗi chế độ xem chứa một tham chiếu đến một phần tương ứng của DOM. Bên trong một khung nhìn là các nút phản chiếu những gì có trong phần này. Góc chỉ định một nút xem cho mỗi phần tử DOM. Mỗi nút giữ một tham chiếu đến một phần tử phù hợp Khi Angular kiểm tra các thay đổi, nó sẽ kiểm tra các khung nhìn. Góc tránh DOM dưới mui xe. Các khung nhìn tham chiếu DOM thay mặt cho nó. Các cơ chế khác được áp dụng để đảm bảo rằng các thay đổi về chế độ xem hiển thị cho DOM. Ngược lại, những thay đổi đối với DOM không ảnh hưởng đến chế độ xem Một lần nữa, các chế độ xem phổ biến trên tất cả các nền tảng phát triển ngoài DOM. Ngay cả khi phát triển cho một nền tảng, lượt xem vẫn được coi là phương pháp hay nhất. Họ đảm bảo rằng Angular có cách giải thích chính xác về DOM Chế độ xem có thể không tồn tại trên thư viện của bên thứ ba. Thao tác DOM trực tiếp là lối thoát hiểm cho loại kịch bản này. Cấp, đừng mong đợi ứng dụng hoạt động đa nền tảng Các loại chế độ xemCó hai loại quan điểm chính. nhúng và lưu trữ Cũng tồn tại các vùng chứa xem. Chúng giữ các chế độ xem được nhúng và lưu trữ và thường được gọi là "các chế độ xem" đơn giản Mỗi lớp 09 đăng ký một khung nhìn (view) với Angular. Các thành phần mới tạo bộ chọn tùy chỉnh nhắm mục tiêu một phần tử DOM nhất định. Chế độ xem gắn với phần tử đó bất cứ nơi nào nó xuất hiện. Angular hiện biết thành phần tồn tại khi nhìn vào mô hình xem Chế độ xem máy chủ và vùng chứaMáy chủ xem các thành phần động của máy chủ. Vùng chứa khung nhìn (lượt xem) tự động đính kèm vào các thành phần đã có trong mẫu. Chế độ xem có thể đính kèm vào bất kỳ phần tử nào ngoài phần tử duy nhất cho các lớp thành phần Hãy nghĩ về phương pháp tạo thành phần truyền thống. Nó bắt đầu bằng cách tạo một lớp, trang trí nó bằng 09 và điền vào siêu dữ liệu. Cách tiếp cận này xảy ra đối với mọi thành phần được xác định trước của mẫu Hãy thử sử dụng lệnh Giao diện dòng lệnh góc (CLI). 08. Nó mang lại những điều sau đây 0 Điều này tạo thành phần với bộ chọn 961. Điều này đính kèm một vùng chứa chế độ xem vào 962 trong mẫu. Nếu đây là gốc của ứng dụng, chế độ xem của nó sẽ gói gọn tất cả các chế độ xem khác. Chế độ xem gốc đánh dấu sự bắt đầu của ứng dụng từ góc nhìn của Angular Tạo các thành phần một cách linh hoạt và đăng ký chúng trong mô hình Chế độ xem góc cần thêm một số bước. Chỉ thị cấu trúc giúp quản lý nội dung động ( 963). Tuy nhiên, các chỉ thị không mở rộng sang các ứng dụng lớn hơn. Quá nhiều chỉ thị cấu trúc làm phức tạp mẫu Đây là lúc việc khởi tạo các thành phần từ logic lớp hiện có trở nên hữu ích. Các thành phần này cần tạo chế độ xem máy chủ có thể chèn vào mô hình chế độ xem. Chế độ xem máy chủ lưu trữ dữ liệu cho các thành phần để Angular nhận ra mục đích cấu trúc của chúng Chế độ xem được nhúngChỉ thị cấu trúc tạo ra một. Phần tử máy chủ của lệnh có một vùng chứa chế độ xem được đính kèm. Điều này giúp nội dung có thể hiển thị theo cách có điều kiện vào bố cục dự định của nó 964 giữ các nút xem được nhúng đại diện cho từng phần tử bên trongHTML bên trong của nó. 964 hoàn toàn không phải là một phần tử DOM. Nó tự nhận xét. Các thẻ xác định phạm vi của chế độ xem được nhúng của nó Khởi tạo chế độ xem được nhúng không yêu cầu tài nguyên bên ngoài ngoài tài liệu tham khảo của chính nó. Truy vấn 967 có thể tìm nạp Với tham chiếu mẫu, việc gọi 968 từ nó sẽ thực hiện thủ thuật. InternalHTML của tham chiếu trở thành thể hiện dạng xem được nhúng của chính nó Trong ví dụ tiếp theo, 969 là vùng chứa chế độ xem. 970 được nhận xét trong quá trình biên dịch giống như 964. Do đó, nó cung cấp một lối thoát để chèn chế độ xem được nhúng trong khi vẫn giữ cho DOM gọn gàng Mẫu dạng xem được nhúng chèn vào vị trí bố trí của 970. Chế độ xem mới được chèn này không có đóng gói chế độ xem bổ sung nào ngoài vùng chứa chế độ xem. Hãy nhớ điều đó khác với chế độ xem máy chủ như thế nào (chế độ xem máy chủ đính kèm với trình bao bọc phần tử 973 của chúng) 34 967 truy vấn cho biến tham chiếu mẫu 975. Điều này cung cấp một tài liệu tham khảo mẫu của loại 976. 976 giữ chức năng 968. Nó khởi tạo mẫu dưới dạng chế độ xem được nhúng Đối số duy nhất của 968 là dành cho ngữ cảnh. Nếu bạn muốn chuyển siêu dữ liệu bổ sung, bạn có thể làm điều đó ở đây dưới dạng một đối tượng. Các trường phải khớp với thuộc tính 964 ( 981). Vượt qua 982 cho biết không cần thêm siêu dữ liệu Truy vấn 967 thứ hai cung cấp tham chiếu đến 970 dưới dạng 985. Chế độ xem được nhúng chỉ đính kèm với các chế độ xem khác, không bao giờ là DOM. 985 tham chiếu đến chế độ xem trong chế độ xem được nhúng Chế độ xem được nhúng cũng có thể chèn vào chế độ xem thành phần của 962. Cách tiếp cận này định vị chế độ xem ở cuối chế độ xem của ExampleComponent. Tuy nhiên, trong ví dụ này, chúng tôi muốn nội dung hiển thị ở chính giữa nơi có 970 chỗ ngồi Hàm 985 990 chèn chế độ xem được nhúng vào 970. Nội dung của chế độ xem hiển thị ở vị trí dự định ngay giữa chế độ xem của ExampleComponent định tuyếnĐịnh tuyến là cần thiết. Nhiều ứng dụng web hiện đại lưu trữ quá nhiều thông tin cho một trang. Người dùng cũng không cần phải cuộn qua toàn bộ giá trị nội dung của ứng dụng. Một ứng dụng cần tự chia thành các phần có thể phân biệt được. Một cách thực hành tốt nhất của Angular là tải và định cấu hình bộ định tuyến trong một mô-đun cấp cao nhất, riêng biệt dành riêng cho việc định tuyến và được nhập bởi AppModule gốc Người dùng ưu tiên thông tin cần thiết. Định tuyến giúp họ tìm phần ứng dụng có thông tin đó. Bất kỳ thông tin nào khác hữu ích cho những người dùng khác có thể tồn tại trên một lộ trình hoàn toàn riêng biệt. Với định tuyến, cả hai người dùng có thể tìm thấy những gì họ cần một cách nhanh chóng. Các chi tiết không liên quan bị che khuất đằng sau các tuyến đường không liên quan Định tuyến vượt trội trong việc sắp xếp và hạn chế quyền truy cập vào dữ liệu ứng dụng. Dữ liệu nhạy cảm không bao giờ được hiển thị cho người dùng trái phép. Giữa mỗi tuyến đường, ứng dụng có thể can thiệp. Nó có thể kiểm tra phiên của người dùng cho mục đích xác thực. Quá trình kiểm tra này xác định tuyến đường sẽ hiển thị gì nếu nó hoàn toàn hiển thị. Định tuyến mang đến cho nhà phát triển cơ hội hoàn hảo để xác minh người dùng trước khi tiếp tục Đối với Angular, định tuyến chiếm toàn bộ thư viện của riêng nó trong khung. Tất cả các khung giao diện người dùng hiện đại đều hỗ trợ định tuyến và Angular cũng không khác. Định tuyến xảy ra từ phía máy khách bằng cách sử dụng hàm băm hoặc định tuyến vị trí. Cả hai kiểu đều cho phép khách hàng quản lý các tuyến đường của riêng mình. Không cần hỗ trợ thêm từ máy chủ ngoài yêu cầu ban đầu Định tuyến cơ bảnXuất các tiện ích định tuyến với 992 có sẵn từ 993. Nó không phải là một phần của thư viện lõi vì không phải tất cả các ứng dụng đều yêu cầu định tuyến. Cách thông thường nhất để giới thiệu định tuyến là mô-đun tính năng riêng của nó Khi độ phức tạp của tuyến đường tăng lên, việc có nó làm mô-đun riêng sẽ thúc đẩy tính đơn giản của mô-đun gốc. Giữ cho nó đơn giản mà không ảnh hưởng đến chức năng tạo thành thiết kế tốt cho các mô-đun 35 994 là một hàm lớp có sẵn từ lớp RouterModule. Hàm chấp nhận một mảng các đối tượng 995 là 996. 994 định cấu hình các tuyến để tải háo hức trong khi cấu hình thay thế của nó là 998 để tải chậm Eager-loading nghĩa là các tuyến tải nội dung của chúng vào ứng dụng ngay từ đầu. Lazy loading diễn ra theo yêu cầu. Trọng tâm của bài viết này là háo hức tải. Đó là cách tiếp cận mặc định để tải vào một ứng dụng. Định nghĩa lớp RouterModule trông giống như khối mã tiếp theo 36 Đừng lo lắng về các chi tiết cấu hình mà ví dụ bỏ qua với các bình luận. Có một sự hiểu biết chung sẽ làm cho bây giờ Lưu ý cách AppRoutingModule nhập RouterModule đồng thời xuất nó. Điều này hợp lý vì AppRoutingModule là một mô-đun tính năng. Nó nhập vào mô-đun gốc dưới dạng mô-đun tính năng. Nó hiển thị các chỉ thị, giao diện và dịch vụ của RouterModule cho cây thành phần gốc Điều này giải thích tại sao AppRoutingModule phải xuất RouterModule. Nó làm như vậy vì lợi ích của cây thành phần cơ bản của mô-đun gốc. Nó cần quyền truy cập vào các tiện ích định tuyến đó 37 Mã thông báo AppRoutingModule nhập từ trên cùng. Mã thông báo của nó chèn vào mảng nhập khẩu của mô-đun gốc. Cây thành phần gốc bây giờ có thể sử dụng thư viện RouterModule. Điều đó bao gồm các chỉ thị, giao diện và dịch vụ của nó như đã đề cập. Xin chân thành cảm ơn AppRoutingModule đã xuất RouterModule Các tiện ích RouterModule sẽ có ích cho các thành phần gốc. HTML cơ bản cho AppComponent sử dụng một lệnh. 999 38 300 là một chỉ thị thuộc tính của RouterModule. Nó sẽ gắn vào từng phần tử của 301 sau khi các tuyến được thiết lập. 999 là một chỉ thị thành phần với hành vi thú vị. Nó hoạt động nhiều hơn như một điểm đánh dấu để hiển thị nội dung được định tuyến. Kết quả nội dung được định tuyến từ điều hướng đến một tuyến đường cụ thể. Thông thường, điều đó có nghĩa là một thành phần duy nhất được định cấu hình trong AppRoutingModule Nội dung được định tuyến hiển thị ngay sau 303. Không có gì ám bên trong của nó. Điều này không tạo ra quá nhiều sự khác biệt đáng kể. Điều đó nói rằng, đừng mong đợi 999 hoạt động giống như một vùng chứa nội dung được định tuyến. Nó chỉ đơn thuần là một điểm đánh dấu để nối thêm nội dung được định tuyến vào Mô hình đối tượng tài liệu (DOM) Câu hỏi đầu tiên cần giải quyết là ứng dụng này sẽ sử dụng những tuyến đường nào? . AComponent và BComponent. Mỗi người nên có con đường riêng. Họ có thể kết xuất từ AppComponent ________ 2999 tùy thuộc vào vị trí tuyến đường hiện tại Vị trí tuyến đường (hoặc đường dẫn) xác định những gì nối với nguồn gốc của trang web (e. g. http. //máy chủ cục bộ. 4200) qua một loạt dấu gạch chéo (______3306) 39 307 hiển thị AComponent từ 999 của AppComponent. ________ 3309 renderThành phần. Tuy nhiên, bạn cần một cách để định tuyến đến những vị trí này mà không cần sử dụng thanh địa chỉ. Ứng dụng không nên dựa vào thanh địa chỉ của trình duyệt web để điều hướng CSS toàn cầu (Cascading Style-sheets) bổ sung cho HTML bên dưới nó. Liên kết bộ định tuyến của ứng dụng phải có giao diện dễ chịu. CSS này cũng áp dụng cho tất cả các ví dụ khác 00 01 Đây là định tuyến cơ bản. Nhấp vào một trong các phần tử của bộ định tuyếnLink sẽ định tuyến địa chỉ web. Nó chỉ định lại nó mà không cần làm mới trình duyệt web. Angular's 310 ánh xạ địa chỉ được định tuyến tới 996 được định cấu hình trong AppRoutingModule. Nó khớp địa chỉ với thuộc tính 312 của một đối tượng 995 duy nhất trong mảng. Trận đấu đầu tiên luôn thắng, vì vậy các tuyến trận đấu tất cả phải nằm ở cuối mảng 996 Các tuyến phù hợp với tất cả ngăn ứng dụng bị sập nếu nó không thể khớp với tuyến hiện tại. Điều này có thể xảy ra từ thanh địa chỉ nơi người dùng có thể nhập bất kỳ tuyến đường nào. Đối với điều này, Angular cung cấp một giá trị đường dẫn ký tự đại diện 315 chấp nhận tất cả các tuyến đường. Lộ trình này thường hiển thị thành phần PageNotFoundComponent hiển thị “Lỗi 404. không tìm thấy trang” 02 Đối tượng 995 chứa 317 ngăn không cho PageNotFoundComponent hiển thị do 318. Đây là tuyến đường về nhà của ứng dụng. Để khắc phục điều này, 317 định tuyến lại tuyến đường về nhà tới 307. 307 gián tiếp trở thành tuyến đường về nhà mới của ứng dụng 322 báo cho đối tượng 995 khớp với tuyến đường về nhà ( 318). Nó khớp với đường dẫn trống Hai đối tượng 995 mới này nằm ở cuối mảng vì trận đầu tiên thắng. Phần tử mảng cuối cùng ( 326) luôn khớp nhau, vì vậy nó đi sau cùng Có một điều cuối cùng cần giải quyết trước khi tiếp tục. Làm cách nào để người dùng biết vị trí của họ trong ứng dụng so với tuyến đường hiện tại? . Bằng cách đó, người dùng sẽ biết tuyến đường nào đang hoạt động cho trang web nhất định đây là một cách sửa chữa dễ dàng. Khi bạn nhấp vào một phần tử ________ 3300, Angular ________ 3310 sẽ chỉ định tiêu điểm cho phần tử đó. Tiêu điểm này có thể kích hoạt các kiểu nhất định cung cấp phản hồi hữu ích cho người dùng. Chỉ thị 329 có thể theo dõi tiêu điểm này cho nhà phát triển 03 Phép gán đúng của 329 đại diện cho một chuỗi các lớp. Ví dụ này chỉ mô tả một lớp ( 331), nhưng có thể áp dụng bất kỳ số lớp nào được phân cách bằng dấu cách. Khi 310 gán tiêu điểm cho một liên kết bộ định tuyến, các lớp được phân định bằng dấu cách sẽ áp dụng cho phần tử máy chủ. Khi tiêu điểm chuyển đi, các lớp sẽ tự động bị xóa 04 Giờ đây, người dùng có thể dễ dàng nhận ra tuyến đường hiện tại và nội dung trang trùng khớp như thế nào. Đánh dấu 333 áp dụng cho bộ định tuyếnLiên kết phù hợp với tuyến đường hiện tại. 334 đảm bảo tô sáng sẽ ghi đè kiểu nội tuyế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 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 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 QUẢNG CÁO 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 để sử dụng InternalHTML trong AngularJS?Chỉ thị ng-bind-html trong AngularJS được sử dụng để liên kết InternalHTML của phần tử HTML với dữ liệu ứng dụng và xóa mã nguy hiểm khỏi chuỗi HTML . Dịch vụ $sanitize là bắt buộc đối với chỉ thị ng-bind-html. Nó được hỗ trợ bởi tất cả các phần tử HTML.
Có an toàn khi sử dụng InternalHTML trong Angular không?Đảm bảo rằng với tư cách là nhà phát triển, bạn đang tuân theo “Phương pháp góc cạnh” và các phương pháp hay nhất của nó để bảo vệ bạn khỏi XSS. Ví dụ: điều này có nghĩa là bạn không nên sử dụng InternalHTML , không bao giờ sử dụng các mẫu được tạo bằng cách ghép nối đầu vào của người dùng và không bao giờ sử dụng API DOM gốc để tương tác với các phần tử HTML.
Làm cách nào để lấy HTML bên trong trong Angular?2 câu trả lời . Solution 1: {{testhtml}} But that will write out text, not HTML. .. .Solution 2: Note I moved the [innerHtml] to inside the div tag. .. . Solution 3: . Tại sao nên sử dụng InternalHTML?Thuộc tính innerHTML có thể được sử dụng để viết html động trên tài liệu html . Nó được sử dụng chủ yếu trong các trang web để tạo html động như biểu mẫu đăng ký, biểu mẫu nhận xét, liên kết, v.v. |