بعد التحديث الأخير إلى النسخة الأحدث من Angular2، RC.6، تبدو أكبر التغييرات المؤدية للاختراق فيها هي عملية التشغيل بأكملها (من خلال “إدخال” ngModule).
لكن بعد الكثير من الدموع والعرق والتضرع إلى جميع الآلهة التي يمكنني التفكير فيها… لا زلت أعاني مع ما يأمل أن يكون آخر خطأ في سلسلة من الأخطاء الكثيرة:
“No provider for ConnectionBackend!”
في هذه النقطة، أنا أقوم بمزيد من التشابك لأنني غير مدرك تمامًا لـ “ما الذي أفتقده”.
لكن دعني أوضح لك بشكل مفصل ما يحدث هنا. في Angular 2 RC.6، تم إزالة ConnectionBackend واستبدالها بـ HttpClientModule. يبدو أن الخدمة التي تحاول الوصول إليها تستخدم ConnectionBackend، الذي تمت إزالته. لذا، يجب عليك تعديل كودك لاستخدام HttpClientModule بدلاً من HttpModule.
لحل هذه المشكلة، يمكنك القيام بالتالي:
- استبدال HttpModule بـ HttpClientModule في قائمة الاستيرادات في AppModule:
typescriptimport { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [HttpClientModule, BrowserModule, FormsModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppComponent, ...],
providers: [FrameService, { provide: $WINDOW, useValue: window }],
bootstrap: [AppComponent]
})
class AppModule {
}
- قم بإزالة الاعتماد على Http من قائمة المزودين:
typescriptproviders: [FrameService, { provide: $WINDOW, useValue: window }],
بعد تطبيق هذه الخطوات، يجب أن تتجاوز مشكلة “No provider for ConnectionBackend!”.
بالطبع، يجب أن تتأكد أيضًا من تحديث أي استخدام لخدمات Http في التطبيق لاستخدام الطريقة الجديدة المقدمة بواسطة HttpClientModule. هذا يشمل أيضًا استخدام HttpClient بدلاً من Http في أي مكان يتم استخدامها في كود التطبيق.
أتمنى أن تساعدك هذه الإرشادات في حل مشكلتك وتجنب مزيد من الصعوبات والدموع!
المزيد من المعلومات
بعد التحديث الأخير إلى النسخة الأحدث من Angular2، RC.6، تبدو أكبر التغييرات المؤدية للاختراق فيها هي عملية التشغيل بأكملها (من خلال “إدخال” ngModule).
لكن بعد الكثير من الدموع والعرق والتضرع إلى جميع الآلهة التي يمكنني التفكير فيها… لا زلت أعاني مع ما يأمل أن يكون آخر خطأ في سلسلة من الأخطاء الكثيرة:
“No provider for ConnectionBackend!”
في هذه النقطة، أنا أقوم بمزيد من التشابك لأنني غير مدرك تمامًا لـ “ما الذي أفتقده”.
لكن دعني أوضح لك بشكل مفصل ما يحدث هنا. في Angular 2 RC.6، تم إزالة ConnectionBackend واستبدالها بـ HttpClientModule. يبدو أن الخدمة التي تحاول الوصول إليها تستخدم ConnectionBackend، الذي تمت إزالته. لذا، يجب عليك تعديل كودك لاستخدام HttpClientModule بدلاً من HttpModule.
لحل هذه المشكلة، يمكنك القيام بالتالي:
- استبدال HttpModule بـ HttpClientModule في قائمة الاستيرادات في AppModule:
typescriptimport { HttpClientModule } from '@angular/common/http';
@NgModule({
imports: [HttpClientModule, BrowserModule, FormsModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AppComponent, ...],
providers: [FrameService, { provide: $WINDOW, useValue: window }],
bootstrap: [AppComponent]
})
class AppModule {
}
- قم بإزالة الاعتماد على Http من قائمة المزودين:
typescriptproviders: [FrameService, { provide: $WINDOW, useValue: window }],
بعد تطبيق هذه الخطوات، يجب أن تتجاوز مشكلة “No provider for ConnectionBackend!”.
بالطبع، يجب أن تتأكد أيضًا من تحديث أي استخدام لخدمات Http في التطبيق لاستخدام الطريقة الجديدة المقدمة بواسطة HttpClientModule. هذا يشمل أيضًا استخدام HttpClient بدلاً من Http في أي مكان يتم استخدامها في كود التطبيق.
أتمنى أن تساعدك هذه الإرشادات في حل مشكلتك وتجنب مزيد من الصعوبات والدموع!
وفي النهاية، يجدر بي أن أشير إلى أن عملية التحديثات في Angular قد تكون محيرة في بعض الأحيان، لكن من الضروري البقاء على اطلاع دائم بآخر التغييرات والتحسينات لضمان استمرارية تطبيقاتك ومواكبتها لأحدث المعايير والتقنيات.