2017-03-12 3 views
1
export class ProjectDetail { 
    page: string; 
} 

このようなJSONに含まれるページ情報:Ionic2:無効なページコンポーネント:ProjectInfoPage

{ 
    "data":[ 
     { 
      page: "PageInfoPage" 
     }, 
     { 
      page: "PageInfoPage1" 
     }   
    ] 
} 

私は、このJSONからの情報を解析し、その後、アレイに保存されました。 this.nav.push(pd.page)を実行すると は、タイトルdescribed.Iとして投げる例外は「コンポーネント」から「string」を変換する方法を知りません。

============================================== ============== 私が説明したAngular 2 - Resolve Component Factory with a stringのようなメソッドを使用します。これは私のコードです:

itemClick(pd: ProjectDetail) { 

     var factories = Array.from(this.resolver['_factories'].keys()); 
     var factoryClass = <Type<any>>factories.find((x: any) => x.name === pd.page); 
     const factory = this.resolver.resolveComponentFactory(factoryClass); 
     const compRef = this.vcRef.createComponent(factory); 

     if (this.componentRef) { 
      this.componentRef.destroy(); 
     } 

     this.componentRef = compRef; 

     this.nav.push(compRef, { 
      item: pd, 
      pid: this.project.pid 
     }); 
    } 

これはまだ動作しません。あなたの答えをありがとう。で、最後の

、私はこのようなマップ作成愚かmethod.Asでそれを解決:

componentRegistry = { 
     'ProjectInfoPage': ProjectInfoPage 
    }; 

をし、このようにプッシュする:

this.nav.push(this.componentRegistry[pd.page], { 
      item: pd, 
      pid: this.project.pid 
     }); 
+0

多分これは役立ちます:http://stackoverflow.com/questions/40222579/angular-2-resolve-component-factory-with-a-string#40247193を –

+0

ありがとう、私はそれを解決私はこの 'componentRegistry = {'PageInfoPage':PageInfoPage}'のようなマップを作成するので、愚かな方法を使用します。 – David

答えて

0

通常、インポートする必要があり移動するページの実際のコンポーネントクラスを作成し、そのクラスをスタックにプッシュします。デフォルトでは、文字列参照を介してナビゲートする方法はionic2に組み込まれていません。スタックにコンポーネントクラスをプッシュするのではなく、文字列を使用してナビゲートできるようにしたかったのと同じ問題が発生しました。

は、これを実現する方法についてのイオンフォーラムから次のリンクをご覧ください。ベータ段階から、この問題を解決し、その後イオン2.2.0でこれを行う方法のため、更新の答えにする方法などがスレッドへの最後の2つの応答、を見てください。最終的なリリース以来、同じソリューションがすべてのバージョンのionic 2で動作することは間違いありませんが、

https://forum.ionicframework.com/t/ionic2-navigation-circular-depencies/41123/5

+0

はありがとう、私はこの 'componentRegistry = {「PageInfoPage」:PageInfoPage}のようなマップを作成するように私は、愚かな方法を使って、それを解決し'。 – David

関連する問題