4

ここで基本的な何かが欠けていると確信しています。

RC5 の前に ng2 アップグレード アダプターを使用して、ng1 アプリケーションを ng2 に移植し始めました。以前は、コンポーネントが直接コンポーネントで使用していたディレクティブを宣言すると、すべてが正しく接続され、意味がありました。

しかし、今、ハイブリッド アプリを Angular 2 Final に移行しようとしています。依存関係に関しては、NgModule 全体がハイブリッド アプリと混同しています。

アップグレード アダプターを作成するには、ハイブリッド アプリで使用する Ng2 モジュールを渡す必要があります。それはいいです。しかし、アップグレード アダプタを作成する前に、Ng2 モジュールを完全に定義する必要があります。それが本当なら、まだ作成されていないアップグレード アダプターを使用して、ng2 モジュールで使用する ng1 コンポーネントをアップグレードするにはどうすればよいですか (アダプターを作成する前に作成する必要があります)。

参考までに、他の方法でも問題ありません-ng1で使用する必要があるすべてのトップレベルのng2コンポーネントをダウングレードするtypescriptモジュールがあり(ui-router構成で)、そのtypescriptモジュールは両方のアップグレードアダプターの後にロードされますそして、ダウングレードするコンポーネントを含む Ng2 モジュール。

それで、私は何が欠けていますか?アップグレード アダプタの upgradeNg1Component 機能を利用するにはどうすればよいですか?

この機能がないと、最も外側のコンポーネントから始めて、内側に向かって作業する必要があります。そして、それはうまく機能しますが、全体で使用されるいくつかの一般的なコンポーネントがあり、最初にそれらを ng2 に変換する必要はありません。

4

1 に答える 1

2

私は同じ問題に出くわし、 Angular のソース コードを調べて解決策を見つけました。トリックはforwardRef()、作成時に使用することUpgradeAdapterです:

import {NgModule, forwardRef} from '@angular/core';
import {UpgradeAdapter} from '@angular/upgrade';

const adapter = new UpgradeAdapter(forwardRef(() => AppModule));

@NgModule({
    declarations: [
         adapter.upgradeNg1Component('my-component');
    ]
})
class AppModule {
}

// now call adapter.bootstrap()
于 2016-10-18T20:47:52.337 に答える