Angularの親子コンポーネント通信の詳細な説明

Angularの親子コンポーネント通信の詳細な説明

使用されるAPI

Input - 子コンポーネントで許容されるプロパティを定義します。親コンポーネントはこれを使用して子コンポーネントにデータを渡すことができます。

Output - 子コンポーネントの出力プロパティ。親コンポーネントに対応するアクションを実行するように通知するには、このプロパティは EventEmitter イベント タイプである必要があります。

EventEmitter - @Output ディレクティブを持つコンポーネントで使用され、カスタム イベントを同期的または非同期的に発行し、インスタンスをサブスクライブしてこれらのイベントのハンドラーを登録します。

簡単な例

リスト内のサブコンポーネントをレンダリングし、サブコンポーネントをクリックして親コンポーネントに操作を実行するように通知します。

人.ts

エクスポートインターフェースPerson {
  名前: 文字列;
  年齢: 番号;
  性別: 文字列;
}

親コンポーネント

'@angular/core' から Component、OnInit をインポートします。
'./person' から { Person } をインポートします。
@成分({
  セレクター: 'app-comp-parent',
  テンプレート: `
    <app-comp-child
      *ngFor="let person of personList"
      (itemClick)="onItemClick($event)"
      [データ]="人"
    </app-comp-child> ...
  `、
})
CompParentComponentクラスをエクスポートし、OnInitを実装します。
  人リスト: 人[] = [
    { 名前: '张三', 年齢: 21, 性別: '男' },
    { 名前: 'Li Si'、年齢: 25、性別: '男性' },
    { 名前: '李璃', 年齢: 20, 性別: '女' },
  ];
  コンストラクタ(){}
  ngOnInit(): void { }
  onItemClick(アイテム: 人){
    console.log('クリック人: ', アイテム);
  }
}

サブコンポーネント

'@angular/core' から Component、EventEmitter、Input、OnInit、Output } をインポートします。
'./person' から { Person } をインポートします。
@成分({
  セレクター: 'app-comp-child',
  テンプレート: `
    <div (クリック)="itemClick.emit(データ)">
      名前: {{ data.name }}
      年齢: {{ data.age }}
      性別: {{ data.sex }}
    </div>
  `、
})
CompChildComponentクラスをエクスポートし、OnInitを実装します。
  @Input() データ!: Person;
  @Output() itemClick = 新しい EventEmitter();
  コンストラクタ(){}
  ngOnInit(): void { }
}

効果

レンダリング

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Angular2 親子コンポーネント通信の例
  • Angular 2 親コンポーネントと子コンポーネント間の共有サービス通信の実装
  • Angular2 親子コンポーネントのデータ通信例

<<:  Web フォントの読み込みを最適化する方法をご存知ですか?

>>:  ドラッグ効果を実現するための純粋なCSSコード

推薦する

202 無料の高品質 XHTML テンプレート (1)

ここで 123WORDPRESS.COM はこれらのテンプレートの最初の部分を紹介します。各テンプレ...

div が contentEditable=true に設定されている場合、コンテンツをリセットした後にカーソルを配置することはできません。

最近、絵文字にコメントする機能が必要なコメント機能に取り組んでいたため、 contentEditab...

Ubuntu 20.04にROS Noeticをインストールする方法

免責事項:プロジェクトでは ROS 環境を使用する必要があるため、これは Ubuntu 20.04 ...

Windows 10 での mysql-8.0.17-winx64 のインストール方法

1.公式サイトからダウンロードして解凍する参考: ダウンロード後、zip 圧縮ファイル (mysql...

ウェブサイトのユーザビリティとコンバージョン率を向上させる 25 のツール

ウェブサイトの場合、ユーザビリティとは、ユーザーが必要な情報を効果的に見つけたり、タスクを完了したり...

MySQL 5.7 zip版(zip版)のインストールと設定手順の詳細

はじめに: Windows 10 を再インストールし、同時にファイルを整理しました。しかし、MySQ...

Linux でユーザー アカウントをロックおよびロック解除する 3 つの方法

組織内で何らかのパスワード ポリシーがすでに実装されている場合は、この記事を読む必要はありません。た...

Docker Swarm クラスタ管理の使用と原理の分析

Swarm クラスター管理導入Docker Swarm は Docker 用のクラスター管理ツールで...

Mysql で期間の交差をクエリする方法

MySQLクエリ期間の交差使用シナリオデータベース テーブルには、starttime と endti...

ボタンの権限判定を実装するためのVueカスタムv-has命令

アプリケーションシナリオバックグラウンド管理システムを例にとると、各ユーザーには異なるボタン権限があ...

HTML の blockquote タグの使用と美化

ブロック引用の定義と使用法<blockquote> タグは引用ブロックを定義します。 &...

mysql8.0.11 winx64 のインストールと設定方法のグラフィック チュートリアル (win10)

mysql 8.0.11 winx64のインストールチュートリアルは以下のように記録され、みんなと...

Linux で MySQL をインストールする簡単な方法

Linux に MySQL をインストールする方法をオンラインで検索すると、多くの方法が表示されまし...

超シンプルな QPS 統計手法 (推奨)

過去 N 秒間の QPS 値の統計 (1 秒あたりの選択、挿入などを含む) mysql> se...

mysql5.6 の無効な utf8 設定の問題を解決する

mysql5.6 のグリーン バージョンを解凍すると、my-default.ini ファイルが作成さ...