Questions Management – Frontend – Xây dựng phần hiển thị tất cả question

Xem toàn bộ series bài viết hướng dẫn xây dựng ứng dụng Questions Management tại đây.

Trong bài viết trước, mình đã xây dựng giao diện cho phần hiển thị tất cả các question rồi. Bây giờ là lúc chúng ta sẽ gọi các API của API Question Service để thực hiện các thao tác trên question các bạn nhé! Đầu tiên sẽ là hiển thị tất cả các question.

Đầu tiên, mình sẽ tạo mới một class QuestionsService để thực hiện việc gọi API lấy tất cả các question từ API Question Service.

Để làm được điều này, đầu tiên, mình sẽ tạo mới một class QuestionsService nằm trong thư mục src/app/services như sau:

Questions Management – Frontend – Xây dựng phần hiển thị tất cả question

Class này sẽ được inject vào class AllQuestionsComponent để sử dụng nên mình sẽ khai báo nó cùng với decorator @Injectable như sau:

Tiếp theo mình sẽ tạo mới các đối tượng để chứa các thông tin về question mà API Question Service sẽ trả về. Vì đối tượng chứa thông tin về category mình đã tạo trong bài viết trước rồi nên mình sẽ tạo thêm những đối tượng Question, Option, CompositeQuestion như sau:

Để có thể gọi API lấy tất cả các question của API Question Service, mình sẽ khai báo sử dụng đối tượng HttpClient của Angular như sau:

Bây giờ thì mình có thể viết phương thức để lấy tất cả các question từ API Question Service rồi:

Tương tự như khi gọi API Category Service, để tránh lỗi CORS mà mình đã đề cập trong bài viết này, mình sẽ sửa tập tin proxy.conf.json nằm trong thư mục của project frontend để thêm cho phần gọi tới API Question Service như sau:

Với khai báo trên, các request ra ngoài với URL bắt đầu bằng “/question” sẽ được request tới địa chỉ http://localhost:8281, là địa chỉ của API Question Service đó các bạn!

Tương tự như class CategoriesService, chúng ta cần khai báo class QuestionsService này trong class AppModule, trong thuộc tính provider của decorator @NgModule như sau:



OK, bây giờ chúng ta sẽ sử dụng class QuestionsService để lấy tất cả các question hiện có để display lên giao diện của phần hiển thị tất cả các câu hỏi các bạn nhé.

Để làm được điều này, đầu tiên, chúng ta sẽ khai báo sử dụng class QuestionsService trong phần constructor của class AllQuestionsComponent như sau:

Bây giờ thì chúng ta có thể viết code sử dụng phương thức findAllQuestions() của QuestionsService để lấy tất cả các question rồi:

Để hiển thị những question này lên, trong tập tin all_questions.component.html, phần table hiển thị danh sách các question mình sẽ sửa lại như sau:

OK, mọi thứ đã xong, giờ chạy thử nha các bạn.


Ở đây, chúng ta cần chạy ứng dụng Angular với tập tin proxy.conf.json như sau:

Giả sử lúc này trong database mình đang có những thông tin như sau:

Questions Management – Frontend – Xây dựng phần hiển thị tất cả question

thì lúc này, nếu chạy ứng dụng các bạn sẽ thấy danh sách các question được hiển thị như sau:

Questions Management – Frontend – Xây dựng phần hiển thị tất cả question

Add Comment