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
});
多分これは役立ちます:http://stackoverflow.com/questions/40222579/angular-2-resolve-component-factory-with-a-string#40247193を –
ありがとう、私はそれを解決私はこの 'componentRegistry = {'PageInfoPage':PageInfoPage}'のようなマップを作成するので、愚かな方法を使用します。 – David