RESTサービスからいくつかのHTMLコンテンツを取得するIonic 2アプリケーションがあります。そのコンテンツは、通常のHTMLコンテンツ(パラグラフ、リッチテキストなど)としてユーザーに表示されます。Ionic2/Angular2アプリのサービス提供コンテンツ内のリンクのクリックに反応する
コンテンツ内の一部のリンクをクリックすると、新しいアプリケーションページが表示されるはずです(NavController )。アプリ内に固定されたコンテンツに
が、これは非常に簡単です:テンプレートで
コンポーネントクラスで
Bla bla bla <a href="/specialPage/someId" (click)="pushSpecialPage($event, 'someId')">link text</a> bla bla bla.
:SpecialPage
はイオン2ページの構成要素であることを考えると
pagePush(event, destiny: string) {
this.navCtrl.push(SpecialPage, { contentId: destiny });
}
}
。
問題は、私のコンテンツはサービスから来て、[innerHTML]=
を使って挿入すると、コンテンツはAngular2コンテンツとして処理されません。
サービスを使用して取得されたコンテンツのクリックにはどのように反応できませんか?
私の考えは以下のとおりです。
処理されるべきリンクを検出し、反応するようにそれらに(おそらく
(click)
)の角度のコードを追加して、何とかコードをコンパイルし、テンプレートに挿入します。カスタムプロトコル(たとえば、href = "specialPage:// someId")を使用して、これらのリンクに対するユーザーのクリックを傍受します。クリックがAngular2で傍受されたら、適切なPageをNavControllerにプッシュします。
これらのアプローチのいずれかが有効かどうか、またその実装方法はわかりません。
を当初から、角度2の設計の一部は、事前に(IBMアカデミー)の発生する にこのプロセスを可能にするためだった - ということ:それは言われていますAngular 2 RC5 - NgModules, Lazy Loading and AoT compilation角度2ブログ記事を読んだので、私は最初の解決策に疑問をしました構築ステップとして、アプリケーションをビルドするときは です。 Angularのコードサイズの約60%は です。この作業を行うコンパイラであるため、AoTコンパイルを有効にすると というコードがユーザに出荷される必要はありません。
コンパイラコードがクライアントにプッシュされていないようだので、オンザフライでコンパイルすることはできません。