父组件向子组件传参

app-component-ts

  1. export class AppComponent {
  2. public title:string="你的小可爱突然出现"
  3. }

2 在父组件中,子组件通过属性接收父组件穿过来的参数

  1. <app-header [title]="title"></app-header>

在子组件中注册引入Input模块

  1. import { Component, OnInit, Input } from '@angular/core';
  2. export class HeaderComponent implements OnInit {
  3. @Input() title:string
  4. }

4 使用

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

子组件向父组件传参

子组件通过属性接收父组件穿过来的参数

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

子组件通过@Input接收

  1. export class HeaderComponent implements OnInit {
  2. @Input() run:any
  3. constructor() { }
  4. ngOnInit() {
  5. }
  6. }
  7. header
  1. <button (click)="handleClick()">向父传参</button> html
  2. handleClick(){
  3. // console.log(1)
  4. this.run("1234")
  5. } ts
  6. header

二.子组件通过@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. }