一、入口文件App

在app.module.ts中注册组件
image.png

二、生成组件

新建终端,命令行输入命令生成组件

  1. ng g component components/header

image.png

三、父子组件传值

一、父向子传值

1 在父组件中定义一个参数

  1. export class AppComponent {
  2. public movies:any[]
  3. }

2 子组件中引入Input模块

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

3 @Input注册

  1. export class HeaderComponent implements OnInit {
  2. @Input() data:any
  3. constructor() { }
  4. ngOnInit() {
  5. }
  6. }

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

  1. <app-item *ngFor="let item of movies" [data]="item"></app-item>

二、子向父传值

第一种

1 在父组件中定义一个方法

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

2 在子组件中获取方法

  1. import { Component, OnInit,Input } from '@angular/core';
  2. export class HeaderComponent implements OnInit {
  3. @Input() run:any
  4. constructor() { }
  5. ngOnInit() {
  6. }
  7. }

3 子组件通过事件传递参数给父组件

  1. <button (click)="handleClick()">向父传参</button>
  2. handleClick(){
  3. this.run("1234")
  4. }

4 父组件接收子组件传过来的参数

  1. export class AppComponent {
  2. run(id:string){
  3. console.log(id)
  4. }
  5. }

第二种(不建议)

1 子组件中引入模块

  1. import { Component, OnInit, Output, EventEmitter } from '@angular/core';
  2. export class HeaderComponent implements OnInit {
  3. @Output() private outer = new EventEmitter<string>()
  4. constructor() { }
  5. }

2 子组件事件传参

  1. <button (click)="handleClick()">向父传参</button>
  2. handleClick(){
  3. this.outer.emit("1997")
  4. }

3 父组件自定义方法接收

  1. <app-header (outer)="getId($event)"></app-header>
  2. getId(id:string){
  3. console.log(id)
  4. }

四、在父组件中使用子组件的数据

ViewChild可以在父组件中使用子组件的数据或者方法

4-1 子组件中的数据

  1. export class ContentComponent implements OnInit {
  2. public msg:string="我是你爸爸"
  3. constructor() { }
  4. ngOnInit() {
  5. }
  6. }

4-2 给子组件一个名称

  1. <app-content #content></app-content>

4-3 在父组件中配置

  1. import { Component, ViewChild } from '@angular/core';
  2. export class AppComponent {
  3. @ViewChild('content',{static:false}) content:any
  4. }
  1. <p>{{content.msg}}</p>