1.父級向子級傳值,不管是屬性,方法,還是整個父級對象this,都可以通過類似變量的形式傳入,具體如下
<app-detail #detail msg="123"></app-detail> //傳入的值不是變量 <app-detail #detail [msg]="parentMsg"></app-detail> //傳入的是變量 import { Component, OnInit, Input } from '@angular/core'; // 通過input裝飾器獲取父級傳過來的值 @Input() msg: string; //獲取值 ngOnInit() { console.log(this.msg, '-----子組件傳過來的msg-----'); } //直接 this 可以引用
2.父級獲取子組件的信息
第一種可以通過ViewChild的方式進行獲取
<app-detail #detail [msg]="parentMsg"></app-detail> //組件 import { Component, OnInit, AfterViewInit, ViewChild } from '@angular/core'; //引入 ViewChild @ViewChild('detail') myDom: any; ngAfterViewInit(): void { console.log(this.myDom.msg); this.myDom.run(); } //直接就能獲取子組件的數據
第二種通過@Output 和 EventEmitter獲取
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'; //子組件引入裝飾器 @Output() private outer = new EventEmitter(); //定義@Output的裝飾器 emitData() { this.outer.emit('傳入給父級的值'); } //子組件emit給父級的方法 <button (click)="emitData()">提交數據給父級</button> //按鈕觸發 <app-detail #detail [msg]="parentMsg" (outer)="getChildMsg($event)"></app-detail> //父級通過outer事件接受,參數是$event, outer必須和子組件定義的變量名一致 getChildMsg(msg) { console.log(msg, '---從子集拿過來的值---'); } // 父級獲取emit傳過來的值
3.兄弟之間傳值通過localStorage或者是服務進行獲取