2016-08-19 5 views
7

私は、rc.3と廃止予定のルータで動作しているAngular 1/Angular 2ハイブリッドアプリを持っています。私が見つけることができるすべての情報源から、rc.5は新しいルータに向かって進む大きなステップです。私はハイブリッドアプリをブートストラップしてルートコンポーネントをレンダリングすることができますが、ルーティングは機能しません。ルーティングでngUpgradeを使用してAngular 2 rc.6ハイブリッドアプリをブートストラップする

var upgradeAdapter = new UpgradeAdapter(forwardRef(() => AppModule)); 

angular.module('ng1App', []) 
    .directive('myBaseComponent', <any>upgradeAdapter.downgradeNg2Component(MyBaseComponent)); 

@NgModule({ 
    imports: [BrowserModule, routing], 
    providers: [appRoutingProviders, HTTP_PROVIDERS], 
    declarations: [MyBaseComponent, 
    MyNG2RoutableComponent] 
}) 
class AppModule { } 


upgradeAdapter.bootstrap(document.body, ['ng1App']).ready(function(){ 
    console.log('bootstraped!'); 
}); 

私のルートNG2コンポーネントのブートストラップは、レンダリングするテンプレートにものを投げることができます。しかし、私が<router-outlet></router-outlet>を追加すると、子ルートをレンダリングしないようです。 upgradeAdapterを使わずに私のNG2アプリだけをブートストラップすれば、すべて正常に動作します。

1つの接続ピースが欠けているような気がします。何か案は?


角度RC.6とルータRC.2更新

私は、先週と同じ問題をrc.6とルータのrc.2バージョンにアップグレード。 UpgradAdapterは、ルーティングが関係していない場合に効果的です。いったん私がルータ出口を引っ張ると、何もレンダリングされず、エラーもありません。

+0

はあなたのコンポーネントの 'ディレクティブ' プロパティデコレータにルータのディレクティブを追加しましたか? '@ angle/router 'の' import {ROUTER_DIRECTIVES}'から ' –

+0

@OlegBarinov私はちょうどそのショットを与えましたが、まだ何もありません。私はルータの指示がモジュールレベルで世話をするだろうと思った? angular.ioのガイドに従って、私はapp.routing.tsにルーティングを設定し、 'RouterModule.forRoot()'関数を利用して、私のモジュールのインポートで使用します。どちらの方法でも、ディレクティブを直接インポートすることは役に立ちませんでした。 –

+0

私は今週rc.6にアップグレードしました。同じ問題です。 UpgradAdapterは、ルーティングが関係していない場合に効果的です。いったん私がルータ出口を引っ張ると、何もレンダリングされず、エラーもありません。 –

答えて

3

角度ルータには、インスタンス化するために少なくとも1つのコンポーネントがブートストラップされている必要があります。 ngUpgradeはAngular 1サイドをブートストラップするので、Angular 2ブートストラップされたコンポーネントはありません。これを回避するには、ApplicationRefを上書きして独自のコンポーネントを提供する必要があります。ここにこれを達成する方法を示す作業中のプランナーがあります。参考のため

http://plnkr.co/edit/Gj8xq0?p=preview

https://github.com/angular/angular/issues/9870

+0

これはまさに私が探していたものです!ありがとうございました!私はエラーが投げられていないので、いくつかの魔法の接続ソースがなければならないことを知っていました。ドキュメントは間もなく更新されると確信していますが、これにより、私たちのアプリケーションを最新のrcに更新することが妨げられます。 –

+1

これはAngular 2.1.0以降では必要なくなりました。この回答を更新すると良いでしょう。 – studds

関連する問題