SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

次世代Webアプリケーションフレームワーク「Angular」の活用

フレームワークとツールの両面で完成度アップ! 「Angular」バージョン7の新機能

次世代Webアプリケーションフレームワーク「Angular」の活用 第18回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Angular ElementsのContent Projectionサポート

 AngularのコンポーネントをHTMLのカスタム要素(Custom Elements)として利用できる「Angular Elements」で、タグの内容をコンポーネントに反映する「Content Projection」をサポートしました。図9のサンプルで背景色がついている部分が、Content Projectionでコンポーネントに反映されたタグの内容です。

図9 Angular ElementsでContent Projectionを行うサンプル(p007-elements)
図9 Angular ElementsでContent Projectionを行うサンプル(p007-elements)

 Content Projectionは、ページ全体から分離してカプセル化されたHTML要素(DOMツリー)を作成するWeb標準「Shadow DOM v1」を利用します。記事執筆時点のEdgeブラウザーはShadow DOM v1をサポートしないため、図9はChromeブラウザーで実行しています。

 Content Projectionを利用するAngular Elementsのコンポーネントでは、テンプレート定義で、タグの内容を反映したい場所に<slot>タグを記述します。

[リスト10]Content Projectionの設定(p007-elements/src/app/my-element/my-element.component.html)
<div>
  <h3>Content Projectionのサンプル</h3>
  <div>----ここから----</div>
  <slot></slot><!-- タグの内容がここに反映される-->
  <div>----ここまで----</div>
</div>

 また、リスト11の記述で、Shadow DOM v1を有効にします。encapsulationは、コンポーネントのカプセル化モードを表す属性です。詳細は公式ドキュメントも参照してください。

[リスト11]Shadow DOM v1の設定(p007-elements/src/app/my-element/my-element.component.ts)
@Component({
(略)
  encapsulation: ViewEncapsulation.ShadowDom // Shadow DOM v1を有効
})
export class MyElementComponent {}

 Angular Elementsのコンポーネントを利用する側では、カスタム要素のタグ(この場合は<my-element>タグ)内にHTML(この場合は<div>以下のタグ)を記述すると、リスト10の<slot>の位置に反映されます。

[リスト12]Content Projectionの利用(p007-elements/src/index.html)
<my-element>
  <div style="background-color:#ffaaaa">
    <h2>こんにちは</h2>
    <p>この要素はmy-elementタグ内に書かれています</p>
  </div>
</my-element>

[補足]Angularに関連したパートナーの開発成果

 Angularチームは、Angular関連の開発を行うパートナーに協力しています。Angular 7のリリース告知記事では、Angularプロジェクトの生成や実行がGUIでできるアプリ「Angular Console」など、パートナーの開発成果が紹介されています。

[補足]新描画エンジンIvyは(また)次バージョンに持ち越し

 Angularの次世代描画エンジンとして開発されている「Ivy」は、Angular 6に続きAngular 7でも含まれませんでした。開発は継続して行われています。

まとめ

 本記事では、2018年10月にリリースされたAngular 7の変更点や追加機能を説明しました。プロジェクトカスタマイズ機能や速度改善、Angular Material/Angular Elementsの機能追加など、全体的に完成度をより高めたリリースといえます。

 次回は、ページの初期表示や検索エンジン最適化(SEO)に有効な、Angularのサーバーサイドレンダリング機能を説明します。

参考資料

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
次世代Webアプリケーションフレームワーク「Angular」の活用連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト  吉川 英一(ヨシカワ エイイチ)

WINGSプロジェクトについて> 有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS Twitter: @yyamada(公式)、@yyamada/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11368 2019/02/08 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング