tôi sử dụng Angular2 v2.2.3Angular2 - không đồng bộ phụ thuộc tiêm
tôi đã tạo ra mô-đun chung với forRoot() chức năng, như thế này:
...
public static forRoot(): ModuleWithProviders {
return {
ngModule: CommonsModule,
providers: [
SomeOtherDependency,
{
provide: ConfigService,
useFactory: ConfigFactory,
deps: [Http]
}
]
};
Đây là ConfigFactory tôi:
export function ConfigFactory(http:Http):Promise<ConfigService> {
return http.get('confg/config.json').map(r => {
return new ConfigService(r);
}).toPromise();
}
Tôi cũng đã cố gắng trả lại Lời hứa và Quan sát.
SomeOtherDependency được định nghĩa trong nhà cung cấp yêu cầu ConfigService. Vấn đề là Angular không bơm giá trị được giải quyết bằng lời hứa nhưng tự hứa.
Làm thế nào tôi có thể buộc góc để chờ cho đến khi lời hứa được giải quyết với sự phụ thuộc phù hợp và chỉ sau đó tiêm nó vào các phụ thuộc khác?
Tôi đã thử các cách tiếp cận khác nhau và giá trị luôn được tiêm là hứa hẹn hoặc có thể quan sát được. Cũng giống như iniector bỏ qua những gì loại nhà máy trở lại. Tôi cần tải một số tệp json trước khi toàn bộ ứng dụng bắt đầu
có thể trùng lặp của [kiễu góc 2 - Các dịch vụ tiêu thụ người khác dịch vụ trước khi gọi một phương thức] (http://stackoverflow.com/câu hỏi/38127741/góc-2-dịch vụ-tiêu thụ-những người khác-dịch vụ-trước-gọi-a-phương pháp) – estus
Kiểm tra cũng ý kiến cho câu hỏi này http://stackoverflow.com/questions/40522938/lazy-loading-module -with-app-initializer? noredirect = 1 # comment68288686_40522938 – yurzui
Tôi đã nhìn thấy chủ đề này trước khi tôi hỏi. Họ không làm việc cho tôi. –