一,父组件给子组件传值
1,父组件调用子组件的时候传入数据
<app-header [msg]="msg"></app-header>
2,子组件引入Input模块
import { Component, OnInit ,Input } from '@angular/core';
3,子组件中@Input接收父组件传过来的数据
@Input() msg:string
4,不仅可以传值,还可以传方法,还可以把整个父组件传过去(通过this)
<app-header [titlel]="title" [msg]="msg" [run]='run' [home]='this'></app-header>
@Input() run:any; @Input() home: any;
二,父组件获取子组件数据和方法
第一种方法:
1,子组件引入Viewchild模块
import { Component, OnInit,Viewchild } from 'Aangular/core";
2,引用子组件加#footer
<app-footer #footer></app-footer>
3,获取子组件实例对象
@Viewchild('footer) footer:any;
4,通过子组件实例对象调用子组件数据和方法
this.footer.xxx
第二种方法:
1,子组件引入Output和EventEmitter
import { Component, OnInit ,Input, Output,EventEmitter} from '@angular/core';
2,子组件中实例化EventEmitter
@output() private outer=new EventEmitter<string>();
3,子组件通过 EventEmitter对象outer实例广播数据
sendParent(){ this.outer.emit('msg from child') }
4,父组件调用子组件的时候,定义接收事件, outer就是子组件的EventEmitter对象outer
<app-header (outer)="runParent($event)"></app-header>
5,父组件接收到数据会调用自己的runParent方法,这个时候就能拿到子组件的数据
runParent(e){ console.1og(e);//子组件给父组件广播的数据
}