عند محاولة ترقية تطبيق Angular 2 إلى إصدار RC2 واستخدام نسخة 3 الألفا من المسار (Router)، يمكن أن تواجه بعض المشاكل مثل عدم وجود الأعضاء المصدرية provideRouter
و RouterConfig
كما تفعل في حالتك. لحل هذه المشكلة، يجب استخدام الأعضاء الصحيحة لإصدار المسار الجديد. في هذا السياق، يُستخدم RouterModule.forRoot(routes)
بدلاً من provideRouter(routes)
و RouterModule.forChild(routes)
بدلاً من RouterConfig
.
بما أنك تستخدم إصدارًا من @angular/router
الأحدث من الألفا 3، يُوصى بالاطلاع على الوثائق الرسمية لـ Angular حول كيفية استخدام المسار (Router) في هذه النسخة. فيما يلي مثال على كيفية تحويل ملف تكوين المسارات (app.router.ts) باستخدام الطريقة الصحيحة:
typescriptimport { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home.component';
import { AboutComponent } from './about.component';
const routes: Routes = [
{ path: 'home', component: HomeComponent },
{ path: 'about', component: AboutComponent }
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule]
})
export class AppRoutingModule { }
وفي مكان ما في تطبيقك، يجب أن تقوم بتضمين AppRoutingModule
في imports
لتحميل مكونات التوجيه:
typescriptimport { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app.router';
import { AppComponent } from './app.component';
import { HomeComponent } from './home.component';
import { AboutComponent } from './about.component';
@NgModule({
declarations: [
AppComponent,
HomeComponent,
AboutComponent
],
imports: [
BrowserModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
يُرجى ملاحظة أن التفاصيل الدقيقة قد تختلف بناءً على هيكل تطبيقك الحالي واحتياجات التوجيه الخاصة بك.
المزيد من المعلومات
بالطبع! لنستكشف المزيد من المعلومات حول ترقية تطبيق Angular 2 إلى RC2 واستخدام نسخة 3 الألفا من المسار (Router).
-
تحديث ملف app.module.ts: في ملف
app.module.ts
، يجب تحديث استيرادات المسار وإضافتها إلى قائمةimports
كما تم في المثال السابق. -
تحديث ملف main.ts: في ملف
main.ts
، يجب تغيير الطريقة التي يتم فيها تحميل التطبيق باستخدامplatformBrowserDynamic().bootstrapModule(AppModule)
.typescriptimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app.module'; platformBrowserDynamic().bootstrapModule(AppModule);
-
تحديث ملف app.component.ts: في حال كان لديك توجيهات خاصة في مكون الرئيسية (AppComponent)، قم بتحديثها وفقًا للتغييرات في المسار.
-
تحديث ملف package.json: تأكد من أن الإصدارات المستخدمة من Angular والمسار وغيرها من الحزم تتوافق معًا ومع إصدار Angular الذي تستخدمه.
json"@angular/common": "2.0.0-rc.2", "@angular/compiler": "2.0.0-rc.2", "@angular/core": "2.0.0-rc.2", "@angular/http": "2.0.0-rc.2", "@angular/platform-browser": "2.0.0-rc.2", "@angular/platform-browser-dynamic": "2.0.0-rc.2", "@angular/router": "3.0.0-alpha.3", "@angular/router-deprecated": "2.0.0-rc.2", "@angular/upgrade": "2.0.0-rc.2", "systemjs": "0.19.27", "core-js": "^2.4.0", "reflect-metadata": "^0.1.3", "rxjs": "5.0.0-beta.6", "zone.js": "^0.6.12", "angular2-in-memory-web-api": "0.0.12"
-
ملفات الإعداد (SystemJS): قم بضبط ملفات الإعداد (SystemJS) للتأكد من أنها تستخدم الإصدارات الصحيحة للمسار و Angular.
javascriptSystem.config({ paths: { 'npm:': 'node_modules/' }, map: { app: 'app', '@angular/core': 'npm:@angular/core/bundles/core.umd.js', '@angular/common': 'npm:@angular/common/bundles/common.umd.js', '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js', '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js', '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js', '@angular/http': 'npm:@angular/http/bundles/http.umd.js', '@angular/router': 'npm:@angular/router/bundles/router.umd.js', '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js', 'rxjs': 'npm:rxjs' }, packages: { app: { main: './main.js', defaultExtension: 'js' }, rxjs: { defaultExtension: 'js' } } });
-
إعادة تشغيل الخادم: قد تحتاج إلى إعادة تشغيل خادم التطوير (development server) بعد التغييرات لضمان أن التطبيق يستخدم الإعدادات الجديدة.
إذا كنت تواجه مشاكل أخرى أو تحتاج إلى مساعدة إضافية، فلا تتردد في طرح استفساراتك.