Tôi đã nâng cấp lên angular2 RC6 và muốn tải tệp cấu hình JSON bên ngoài trước khi khởi động ứng dụng AppModule của tôi. Tôi đã làm việc này trước RC5 nhưng bây giờ gặp khó khăn trong việc tìm kiếm một cách tương đương để tiêm dữ liệu này.Angular2 Khởi động không đồng bộ với tệp cấu hình json bên ngoài
/** Create dummy XSRF Strategy for Http. */
const XRSF_MOCK = provide(XSRFStrategy, { provide: XSRFStrategy, useValue: new FakeXSRFStrategyService() });
/** Create new DI. */
var injector = ReflectiveInjector.resolveAndCreate([ConfigService, HTTP_PROVIDERS, XRSF_MOCK]);
/** Get Http via DI. */
var http = injector.get(Http);
/** Http load config file before bootstrapping app. */
http.get('./config.json').map(res => res.json())
.subscribe(data => {
/** Load JSON response into ConfigService. */
let jsonConfig: ConfigService = new ConfigService();
jsonConfig.fromJson(data);
/** Bootstrap AppCOmponent. */
bootstrap(AppComponent, [..., provide(ConfigService, { useValue: jsonConfig })
])
.catch(err => console.error(err));
});
Điều này làm việc tốt nhưng khó khăn để thay đổi để làm việc với RC6.
Tôi đang thực hiện thí điểm phương pháp sau đây nhưng đấu tranh để sửa đổi AppModule được xác định trước của tôi với dữ liệu được nạp:
const platform = platformBrowserDynamic();
if (XMLHttpRequest) { // Mozilla, Safari, ...
request = new XMLHttpRequest();
} else if (ActiveXObject) { // IE
try {
request = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {
console.log(e);
}
}
}
request.onreadystatechange = function() {
if (this.readyState === 4 && this.status === 200) {
var json = JSON.parse(this.responseText);
let jsonConfig: ConfigService = new ConfigService();
jsonConfig.fromJson(json);
/**** How do I pass jsConfig object into my AppModule here?? ****/
platform.bootstrapModule(AppModule);
}
};
// Open, send.
request.open('GET', './config.json', true);
request.send(null);
Cảm ơn @peeskillet - Đó là những gì tôi đã mất tích! Tôi đã không nhận ra bạn khai báo các mô-đun bên trong một chức năng hoặc! Tôi nhận nó hoạt động như bạn đã đề xuất ở trên. – HUI
hi peeskiller, cấu hình sẽ chứa những gì. chỉ là dịch vụ đơn giản? – gaurang171
@ gaurang171 Yea, chỉ là một biểu diễn cấu trúc của JSON –