Yêu cầu thg 8 8, 2018 2:25 SA 453 0 1
  • 453 0 1
0

[Angular 6] Bị đè data khi gọi http request (GET) nhiều hơn 2 trong ngOnInit()

Chia sẻ
  • 453 0 1

Anh chị cho em hỏi vấn đề này ạ. Không hiểu sao em lại bị gặp lỗi này, khi trong ngOnInit() component gọi 1 http request để Load dữ liệu thì chạy OK. Nhưng khi gọi 2 request GET trong đó. Thì như kiểu nó chỉ chạy cái subcribe sau mà thôi.

Theo em tìm hiểu thì subcribe này là bất đồng bộ. Giá trị nó sẽ trả về và đổ lên trong tương lai thì đáng nhẽ cả 2 cái get sẽ lần lượt đổ dữ liệu lên giao diện sau này. Chứ sao nó lại xảy ra lỗi như kiểu chặn nhau thế này nhỉ?

Ví dụ ở Trang Home em có *ngFor hiển thị danh sách tất cả Books. Cái này gọi request api từ /books

1 *ngFor nữa là hiển thị activitys. Gọi request từ /activities

Khi chạy lên. Thì kiểu chỉ có cái subscribe acitivities là hiển thị ấy. Nhưng nó lại đổ data của acitivity lên luôn cái *ngFor của book. Nghĩa là có mấy object activity thì sẽ hiển thị bấy nhiêu book luôn. Mặc dù tên 2 mảng books và activities dùng để ngFor em đặt tên khác nhau luôn mà@@

(Vì key của 2 object book và actitivity khác nhau nên phần hiển thị Books nó trống không thông tin. Mặc dù số Books hiển thị luôn đúng bằng số activities lấy đc về).

Hàm

Service

 getbooks(limit, page) {
    return this.http.get(this.apiUrl+'/books?limit='+limit+'&page='+page, {responseType: 'json'});
  }
 getActivitys(){
     return this.http.get(this.apiUrl+'/activity/', {responseType: 'json'});
  }
Avatar Vương Hưng @vuong.xuan.hung
thg 8 15, 2018 4:46 SA

@huuhung96 bạn thử bỏ inject HttpClient trong component kia xem có được không

Avatar Huu Hung @huuhung96
thg 9 28, 2018 3:26 CH

@vuong.xuan.hung Ý bạn là xóa đi ạ?

1 CÂU TRẢ LỜI


Đã trả lời thg 8 18, 2018 6:16 SA
0

thay hết đi dùng this.books = data; thử xem vì angular 6 httpclient trả về dữ liệu của get<datatype>

Chia sẻ
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí