1.父组件给子组件按传参
1.1在父组件中,子组件通过属性接收传递过来的参数
export class AppComponent {
title:string = '我是angular';
}
1.2子组件中引入Input模块
import { Component, OnInit,Input } from '@angular/core'; //导入Input
1.3子组件中接收父组件传过来的值
export class HeaderComponent implements OnInit {
@Input() title:string //定义类型
constructor() { }
ngOnInit() {
}
}
1.4子组件张使用父组件的数据
<p>{{title}}</p>
2.子组件给父组件传参
2.1子组件通过属性接收父组件传递过来的方法
<app-header [run]="run"></app-header>
export class AppComponent {
run(id:string){
console.log(id)
}
}
2.2子组件中@Input中接收
export class HeaderComponent implements OnInit {
@Input() run:any;
constructor() { }
...
handleClick(){
this.run("123")
}
}
<button (click)="handleClick()">向父传参</button>
二.子组件通过@Output向父组件传参
//泛型:任意类型
class Person<T>{
emit(msg:T){
console.log(msg);
}
}
var p=new Person<string>();
p.emit("msg")
2.1在子组件中导入Output,EventEmitter两个模块
import { Component, OnInit,Input,Output,EventEmitter } from '@angular/core';
2.2子组件中实例化EventEmitter
export class HeaderComponent implements OnInit {
...
@Output() private outer=new EventEmitter<string>();
}
//通过点击事件传参
<button (click)="handleClick()">向父传参</button>
2.3子组件中通过EventEmitter实例化的对象outer,广播数据
export class HeaderComponent implements OnInit {
@Output() private outer=new EventEmitter<string>();
...
handleClick(){ //outer事件名 emit后面是参数
this.outer.emit("1001011");
}
}
2.4父组件中接收事件
//2.父组件中使用
<app-header (outer)="getId($event)" ></app-header>
export class AppComponent {
getId(id:string){
console.log(id)
}
}