2017-06-10 33 views
5

Theo tài liệu hướng dẫn góc, chúng tôi chỉ có thể tiêm nhà cung cấp (không phải trường hợp) trong khối cấu hình. https://docs.angularjs.org/guide/module#module-loading-dependencies

Nhưng ngược lại với Angular này cho phép bạn tiêm $provide hoặc $inject mặc dù chúng là bản sao dịch vụ đơn.

https://docs.angularjs.org/api/auto/service/$provide

+1

Đọc thông tin về nhà cung cấp sau: https://docs.angularjs.org/guide/providers (Dịch vụ, Nhà máy, Nhà cung cấp và hơn thế nữa). (Ngoài ra, tất cả các dịch vụ trong góc là trường hợp singleton). – ippi

+1

@ippi, tôi nghĩ rằng người đã đặt câu hỏi đã trải qua các tài liệu. Vì vậy, nếu KHÔNG thể trả lời, xin đừng làm mất lòng người. #StayAway –

Trả lời

1

này đã cho tôi tò mò vì vậy tôi đã làm một số nghiên cứu. Dưới đây là những gì tôi tìm thấy:

  1. $ injector không thể được tiêm vào khối cấu hình
  2. $ cung cấp có thể được tiêm vào khối cấu hình

Trong mã, lý do 2 là $provide được đưa vào các providerCache trước khi providerInjector (các vòi phun được sử dụng trong khối cấu hình) được tạo ra. Điều này đảm bảo rằng nó sẽ luôn là nhà cung cấp được biết đến với số providerInjector. https://github.com/angular/angular.js/blob/master/src/auto/injector.js#L671

Điều đó nói rằng, tôi đồng ý rằng việc có thể bơm $provide thành các khối cấu hình dường như mâu thuẫn với nguyên tắc chung về những gì có thể được tiêm vào khối cấu hình đưa ra ở đây: https://docs.angularjs.org/guide/module#module-loading-dependencies

Mặc dù nó được chứng minh rõ ràng là một cái gì đó bạn có thể làm tại đây: https://docs.angularjs.org/guide/module#configuration-blocks

$provide có thể chỉ là một ngoại lệ cho quy tắc chung.

Các vấn đề liên quan