Angular 2 RC4到RC5的迁移

时间:2016-09-20 20:08:34

标签: angular

随着Angular 2.0的最终版本,我们的应用程序需要进行迁移。我首先从RC4迁移到RC5然后再到最终。我按照barbarianmeetscoding-updating-your-angular-2-app-from-rc4-to-rc5-a-practical-guideangular.io - rc4-to-rc5.html的迁移步骤进行了操作。

我们的应用程序是一个包含100多个组件的大型应用程序。我的问题是,为了使迁移成功,我是应该立即对所有组件进行更改还是一次可以将它们作为一个组件?

我已对main.ts,package.json,app.ts进行了必要的更改,并引入了app.module.ts。首先,我将组件指令和提供程序从app.ts移动到app.module,并在app.routes中进行了必要的更改。 但是我收到以下错误 Error screenshot

但是在提到的组件中没有明确使用toString()。

app.module.ts

import { NgModule, CUSTOM_ELEMENTS_SCHEMA} from '@angular/core';
import * as ngCore from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule }   from '@angular/forms';
import { HttpModule} from '@angular/http';
import {HTTP_PROVIDERS} from '@angular/http';
import {routing} from './app.routes';
import { App}  from './app';
import {LocationStrategy, HashLocationStrategy} from  '@angular/common';
import {HttpService}  from '../service/http/httpService';
import {Button} from '../components/button';
import {Checkbox} from '../components/checkbox';
import {PipeSafe} from "../pipe/pipe-safe";
import {OrderBy} from "../pipe/orderby";
import {Number} from '../pipe/number';
@NgModule({
    imports: [
       BrowserModule,
       FormsModule,
       HttpModule,
       routing
    ],
    declarations: [
       App,
       PipeSafe,
       OrderBy,
       Number
    ],
    providers: [
       ngCore.provide(LocationStrategy, {useClass: HashLocationStrategy}),
       ngCore.provide('TemplateComponents', { useValue: {
          'button': Button,
          'checkbox': Checkbox,

       }}),
    HttpService
    ],
    bootstrap:    [ App ],
    schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
  })
  export class AppModule { }

2 个答案:

答案 0 :(得分:0)

去过那儿。这是非常痛苦的,但从RC5迁移到最终版本更加容易,这让人感到很欣慰。也许你还应该考虑直接进入决赛,而不是RC5?关于你的问题:这取决于你的应用程序的整体架构。有时一个组件更容易一个人去。另一方面,组件之间的依赖关系可能非常重要,您需要立即进行所有更改。

我不是100%确定您从哪里获得的错误,但可能是因为您在app.module中的导入和声明中出现了错误。应该进口的东西用于声明或反过来。 toString()是框架的方法,它返回this对象的字符串表示。

答案 1 :(得分:0)

在我升级到2.0.0时,我觉得最简单:

  1. 使用Angular CLI创建一个简单,有代表性的2.0.0-rc.4应用程序;然后,

  2. 将应用程序升级到2.0.0

  3. 我使用不同版本的Angular CLI来获取迁移的两个阶段的依赖关系和配置文件(包括webpack)。您需要尝试使用Angular CLI来查找生成Angular 2.0.0-rc.4应用程序的版本;您可以使用最新版本来生成最终应用程序。

    然后我将我的简单应用程序2.0.0升级所需的一组更改应用到我的整个实际应用程序中;并且,测试每个组件,根据需要进行小的修正。

    在我进行升级过程中,我遇到了一些问题。其中一些,如果您按照我的建议行事,您(希望)会跳过它。

    Module not found: Error: Can't resolve 'hammerjs'

    Cannot find module './models/config'

    "The package rxjs@5.0.0-beta.11 does not satisfy its siblings' peerDependencies requirements!"

    TypeError: Cannot read property 'directoryExists' of undefined

    @angular/forms Generic type 'Type<T>' requires 1 type argument(s)