2016-09-20 88 views
3

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

我们的应用程序是一个具有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 { } 
+0

你检查[这](https://github.com/angular/angular/issues/10612 )出来。看起来类似于你正在处理的事情 – Bean0341

回答

0

去过那里。这非常痛苦,但从RC5移植到最终版本更容易。也许你应该考虑直接进入决赛,而不是RC5?关于你的问题:这取决于你的应用的整体架构。有时候,一个接一个的组件会更容易。另一方面,组件之间的依赖关系可能如此重要,以至于您需要立即进行所有更改。

我不是100%确定从哪里得到的错误,但可能是因为您在app.module中导入和声明时出错。应该去进口的东西去声明或其他方式。 toString()是返回字符串表示形式this对象的框架的方法。

+0

所以即使我不把指令从我的所有组件移到app.module,我的应用程序仍然应该运行,因为它提到现在所有的指令和管道都会被挂起。对? – user3344978

+0

是的。但是你应该考虑它,因为从RC6开始发布它就是必需的。 –

+0

从RC6开始发布将需要我将所有指令,管道和服务移动到app.module中?在我们的应用程序中,我们有100个奇数组件和大约15个服务那么,我应该将每个指令和服务移动到app.module中吗?或者我应该只移动最常用的那些? – user3344978

0

在我升级到2.0.0,我发现最简单的:

  1. 采用了棱角分明CLI创建一个简单的,有些代表,2.0.0-rc.4应用;然后,

  2. 将应用程序升级到2.0.0

我使用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 [email protected] 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)