SOコミュニティとアングラリアンの皆さん、こんにちは!
それで、Angular 2で巨大なプラットフォームを開発している途中です。そして、Angular 2の多くの外部ライブラリと依存関係が新しいAngularに移行していることに気付きました。明らかに。
これらのライブラリをフォークして、フォークされたバージョンを使用し、メインのライブラリ開発にサブスクライブするか、プロジェクトをAngular 4にアップグレードすることができます。
移行する価値があるかどうかを判断するために答えられる質問:
次のように、レガシーとの互換性を確保するためのいくつかの適応を見つけました: https://github.com/angular/angular/commit/e99d721
アプリ全体を調べて、修正を開始する必要がありますか?
つまり、主な機能を再加工して、それらの多くを確認する必要がありますか?
または、開発ではなくコンパイルエラー/警告を修正するのに何日も費やし続けるビルド/コアの非互換性がたくさんありますか?
私に誰かに研究を依頼するのではなく、すでにこのプロセスを経験したか、両方のバージョンを順番によく知っている人に尋ねています経験のヒント、説明などを教えてください。
現在、私はここで研究を行っています:
[〜#〜] update [〜#〜]
Angular 4に移行しました。 @PierreDucが答えたリンクは、移行プロセスで適切なガイドラインを作成するための非常に素晴らしいツールです。
私がお勧めします:
また、現在のプロジェクトをコミットし、devリポジトリに新しいブランチを作成して、そのブランチで移行を進めることをお勧めします。
私が遭遇した問題:Input
、Output
、およびContentChild
は、間違ったパスからインポートされます。
私の場合:
import { Component, OnInit, OnDestro } from '@angular/core';
import { Input, ContentChild } from "@angular/core/src/metadata/directives";
解決策:
import { Component, OnInit, OnDestroy, Input, ContentChild } from '@angular/core';
変更ログを確認する場合、留意する必要があることがいくつかあります。
更新前
OnInit
を使用しないか、またはライフサイクルイベントでextendsを使用してください。代わりに_implements <lifecycle event>
_を使用してください。DefaultIterableDiffer
、_KeyValueDiffers#factories
_、または_IterableDiffers#factories
_の使用を停止しますɵ
_でマークされ、パブリックAPIの一部ではなくなりました。Renderer.invokeElementMethod
_の使用を停止してください。現在、代替品はありません。更新中
npm install @angular/{animations,common,compiler,compiler-cli,core,forms,http,platform-browser,platform-browser-dynamic,platform-server,router}@4.0.0 TypeScript@latest --save
_BrowserAnimationsModule
をアプリの_@angular/platform-browser/animations
_からインポートする必要がありますNgModule
。RootRenderer
を_RendererFactory2
_に置き換えます。Renderer
を_Renderer2
_に置き換えます。更新後
template
タグの名前を_ng-template
_に変更します。OpaqueTokens
をInjectionTokens
に置き換えます。DifferFactory.create(...)
を呼び出す場合は、ChangeDetectorRef
引数を削除してください。ngOutletContext
をngTemplateOutletContext
に置き換えます。CollectionChangeRecord
をIterableChangeRecord
に置き換えますmigrate from angular 2 to angular 4 の方法を示すニース12分のビデオがあります。従うべき基本手順:-
1)古いnode_modulesフォルダーを削除して、2.Xへの参照を回避します
2)package.jsonですべての@angularを4.0.0に変更し、NPMインストールを実行します。可能であれば、キャッシュをクリアしてください。
3)NPMのインストールを行うと、ピアバージョンが一致しない可能性が高くなります。修正してください。上記のビデオでは、ピアの不一致を修正する方法について説明しています。
上記の回答で述べたように、イベントなどのインターフェイスを実装する必要があります。何らかの理由で、問題が発生せず、イベントは以前のAngular 2。
Angularチームは発表しました、angular 2またはangular 4それを呼び出しましょうAngularと大きなアップデートがあります6か月ごとに。angular v4.0.0で問題に直面したため、webpackの設定を変更します。
new webpack.ContextReplacementPlugin(
// The (\\|\/) piece accounts for path separators in *nix and Windows
/angular(\\|\/)core(\\|\/)@angular/,
helpers.root('./src'), // location of your src
{} // a map of your routes
),
そして@ angular/animationsパッケージをインストールしてapp.module.tsファイルにインポートします
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
imports: [
BrowserAnimationsModule
]
})
角度の最新バージョンに更新することを好むでしょう。 Angular V4.0.0はパッケージの重量を減らし、パフォーマンスを向上させました。