1.父组件给子组件按传参

1.1在父组件中,子组件通过属性接收传递过来的参数


    1. <app-header [title]="title"></app-header> //自定义属性将title传过去
  1. export class AppComponent {
  2. title:string = '我是angular';
  3. }

1.2子组件中引入Input模块

  1. import { Component, OnInit,Input } from '@angular/core'; //导入Input

1.3子组件中接收父组件传过来的值

  1. export class HeaderComponent implements OnInit {
  2. @Input() title:string //定义类型
  3. constructor() { }
  4. ngOnInit() {
  5. }
  6. }

1.4子组件张使用父组件的数据

  1. <p>{{title}}</p>

2.子组件给父组件传参

2.1子组件通过属性接收父组件传递过来的方法

  1. <app-header [run]="run"></app-header>
  1. export class AppComponent {
  2. run(id:string){
  3. console.log(id)
  4. }
  5. }

2.2子组件中@Input中接收

  1. export class HeaderComponent implements OnInit {
  2. @Input() run:any;
  3. constructor() { }
  4. ...
  5. handleClick(){
  6. this.run("123")
  7. }
  8. }
  1. <button (click)="handleClick()">向父传参</button>

二.子组件通过@Output向父组件传参

  1. //泛型:任意类型
  2. class Person<T>{
  3. emit(msg:T){
  4. console.log(msg);
  5. }
  6. }
  7. var p=new Person<string>();
  8. p.emit("msg")

2.1在子组件中导入Output,EventEmitter两个模块

  1. import { Component, OnInit,Input,Output,EventEmitter } from '@angular/core';

2.2子组件中实例化EventEmitter

  1. export class HeaderComponent implements OnInit {
  2. ...
  3. @Output() private outer=new EventEmitter<string>();
  4. }
  5. //通过点击事件传参
  6. <button (click)="handleClick()">向父传参</button>

2.3子组件中通过EventEmitter实例化的对象outer,广播数据

  1. export class HeaderComponent implements OnInit {
  2. @Output() private outer=new EventEmitter<string>();
  3. ...
  4. handleClick(){ //outer事件名 emit后面是参数
  5. this.outer.emit("1001011");
  6. }
  7. }

2.4父组件中接收事件

  1. //2.父组件中使用
  2. <app-header (outer)="getId($event)" ></app-header>
  3. export class AppComponent {
  4. getId(id:string){
  5. console.log(id)
  6. }
  7. }