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

推薦する

Linuxでのcrontabの使い方と注意点の詳しい説明

Crontab は定期的な実行を設定するために使用されるコマンドです。そのデーモン プロセスは cr...

Tencent Cloud Server Tomcat ポートにアクセスできない場合の解決策

最近、Tencent Cloudを使用してサーバーを設定しました。使用中に、tomcatポートにアク...

ウェブページを白黒に変換します(Google、Firefox、IE、その他のブラウザと互換性があります)

CSSファイルに書き込むコードをコピーコードは次のとおりです。 01.html {グレイスケール(1...

CSS3で線形グラデーションを実装するためのコードの詳細な説明

序文デモでは古いバージョンのブラウザのグラデーションが実装されています[IE9-]。 IE9 より前...

Centos7.x での Nginx のインストール、SSL 設定、一般的なコマンドの詳細な説明

1. インストールyumを使用してインストールする ##yum nginx を自動的にインストールす...

react+antd.3x は IP 入力ボックスを実装します

この記事では、IP入力ボックスを実装するための react+antd.3x の具体的なコードを参考ま...

HTML 5のドラフトは正式な標準にはならなかった

<br />昨日、W3C で新しいHTML 5 ドラフト (ワーキング ドラフト) が ...

Vue ルーティング this.route.push ジャンプ ページが更新されない場合の解決策

Vue ルーティング this.route.push ジャンプ ページが更新されない1. 背景概要:...

JS でシンプルなデータ監視を実装する方法

目次概要最初のステップステップ2なぜ別の _data が必要なのでしょうか?データにもう少しデータを...

VueはEchartsを使用して3次元棒グラフを実装します

この記事では、Echartsを使用して3次元棒グラフを実装するVueの具体的なコードを参考までに共有...

VMware Esxi のルート パスワードを忘れた後に正常に取得する方法

CentOS6 インストール ディスク (任意のバージョン) を準備するか、別の pnux インスト...

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現するためにCSSを使用する

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現する...

Dockerfile ビルド中に発生する「/bin/sh: pip: コマンドが見つかりません」という問題の解決方法

記述した Dockerfile の内容は次のとおりです。 Python:3.6.8 から pip i...

Linux CentOS 6.5 ifconfig が IP を照会できない問題の解決方法

最近、何人かの友人から、仮想マシンに CentOS をインストールした後、ifconfig コマンド...

中国の専門ではない:文化の違いの中でのウェブ開発

Web デザインと開発は大変な作業なので、少数の人だけを対象に設計しないでください。これは外国人が...