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コード

推薦する

JavaScript でフロントエンドのカウントダウン効果を実装する

この記事では、フロントエンドのカウントダウン効果を実現するためのJavaScriptの具体的なコード...

Mysql と Oracle でよく使用される複数テーブルの変更ステートメントの概要

今日、SQLトレーニングの質問バンクでこの質問を見ました。これは、非常に代表的なマルチテーブル変更の...

CocosCreatorオブジェクトプールの使い方

目次序文:特定の操作ステップ1: プレハブを準備するステップ2: オブジェクトプールを初期化するステ...

Ubuntu 14.04 に FTP サーバーをインストールするための実装手順

目次インストールソフトウェア管理匿名アクセスモード設定ファイルを変更するクライアントがサーバーにログ...

mysql8.0.11をインストールしてrootパスワードを変更し、navicat for mysqlに接続するアイデアの詳細な説明

1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...

MySQLで重複行を削除する方法

SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---20...

VMware仮想マシンにdeepin20をインストールする最も完全で詳細なプロセス

仮想マシンソフトウェア: VMware Workstationイメージ: deepin-deskto...

スライダー効果を実装するミニプログラム

この記事の例では、スライディングブロック効果を実現するための小さなプログラムの具体的なコードを参考ま...

プロファイルを使用して遅い SQL を分析する MySQL の詳細な説明 (グループ左結合はサブクエリよりも効率的です)

プロファイルを使用して遅いSQLを分析するMySQL の SQL パフォーマンス アナライザーの主な...

経験者のHTMLの書き方と理由の分析

1. ナビゲーション: 順序なしリストとその他のラベル要素ナビゲーションを記述するために最も一般的に...

CSSプロパティに基づいたボタンホバーボーダーと背景アニメーションのコレクション

ハートの属性不透明度: .999 は要素のスタッキングコンテキストを作成し、ボタン6と8のアニメーシ...

ウェブサイト上で flv/MP4 やその他のビデオ ファイルを再生できない問題は、MIME タイプに関連しています。

ウェブサイトを作成している際に、flv や MP4 形式などのビデオ ファイルはローカルでは正常に再...

スクリプトを使用して、ワンクリックでDockerイメージをパッケージ化してアップロードします。

著者は1年以上マイクロフロントエンドプロジェクトに取り組んできました。チームは10個のマイクロアプリ...

Vue-Routerのルート設定の詳しい説明

目次導入ルート内のオブジェクト属性パス: 文字列コンポーネント: コンポーネント | () =>...

ネイティブ js でカスタム難易度のマインスイーパ ゲームを実装する

この記事の例では、マインスイーパゲームを実装するためのjsの具体的なコードを参考までに共有しています...