Trong Angular 1.xx, bạn chỉ cần yêu cầu cùng một dịch vụ và bạn kết thúc với cùng một phiên bản, giúp bạn có thể chia sẻ dữ liệu trong dịch vụ.
Bây giờ trong Angular 2, tôi có một thành phần có tham chiếu đến dịch vụ của tôi. Tôi có thể đọc và sửa đổi dữ liệu trong dịch vụ, điều này thật tốt. Khi tôi cố gắng đưa cùng một dịch vụ vào một thành phần khác, có vẻ như tôi nhận được một phiên bản mới.
Tôi đang làm gì sai? Có phải chính mô hình đó là sai (sử dụng dịch vụ để chia sẻ dữ liệu) hay tôi cần đánh dấu dịch vụ là một đơn vị (trong một phiên bản của ứng dụng) hay điều gì đó?
Tôi trên 2.0.0-alpha.27/
btw
Tôi chèn một dịch vụ thông qua appInjector
(chỉnh sửa: bây giờ providers
) trong @Component
chú thích và sau đó lưu một tham chiếu trong hàm tạo. Nó hoạt động cục bộ trong thành phần - không phải giữa các thành phần (chúng không chia sẻ cùng một phiên bản dịch vụ) như tôi nghĩ.
CẬP NHẬT : Kể từ Angular 2.0.0, chúng tôi hiện có @ngModule, nơi bạn sẽ xác định dịch vụ theo thuộc providers
tính trên @ngModule
. Điều đó sẽ đảm bảo cùng một phiên bản của dịch vụ đó được chuyển đến từng thành phần, dịch vụ, v.v. trong mô-đun đó.
https://angular.io/docs/ts/latest/guide/ngmodule.html#providers
CẬP NHẬT : Rất nhiều điều đã xảy ra đối với sự phát triển Angular và FE nói chung. Như @noririco đã đề cập, bạn cũng có thể sử dụng hệ thống quản lý nhà nước như NgRx: https://ngrx.io/