2

この質問では、アプリケーション全体の条件 (プラットフォーム依存のビルド) でコンポーネントをコンパイルする必要がある環境を考慮しています。したがって、ソリューションは Angular 2 のテストからモッキング手法を借りることができますが、本番環境 (AoT を含む) に適用する必要があります。

既存のクライアント側ブラウザー アプリケーションがあることを考慮して、他のプラットフォームの一部のコンポーネントのコンパイルを無効にするか、コンポーネント全体をオーバーライドする必要がある場合があります (Angular Universal サーバー側レンダリングまたはモバイル アプリケーション)。

一部のディレクティブとコンポーネントは、望ましくないため、他のプラットフォームでコンパイルしないでください。いえ

  <client-side-only>fallback HTML contents</client-side-only>

アプリケーションの初期化後も変更されないはずです。

次の 2 つのケースをカバーする必要があります。

  • ディレクティブ/コンポーネントのコンパイルを防ぐ
  • ディレクティブ/コンポーネントを置換または同じセレクターを持つスタブでオーバーライドする

AngularJS では、条件付きでディレクティブをアプリに追加し、必要な場所で使用するのと同じくらい簡単です。

.directive('clientSideOnly', () => ({ terminal: true, priority: 10000 }));

または、デコレータを使用して定義済みのコンポーネント/ディレクティブの動作を変更します。

.decorator('clientSideOnlyComponentDirective', ($delegate) => ...));

これらの Angular 1.x のトリックに対応するものは Angular 2 にありますか?

最小量の WET コードを使用して、Angular 2 でディレクティブとコンポーネントをオーバーライドまたはコンパイルから防止するにはどうすればよいですか?

4

0 に答える 0