查看: 74|回覆: 0

Angular -- 组件传值

[複製鏈接]

3

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-11-1
發表於 2020-1-10 16:22:00 | 顯示全部樓層 |閲讀模式

一、父传子

  1. 在父组件ts中定义要传递的信息

  2. 在父组件html中的子组件标签中定义自定义属性来绑定父组件定义的信息


  3. 在子组件中的ts中,通过@Input来接收自定义属性的名称

    import {Input} from '@angular/core';

    @Input() info:string;


  4. 在子组件中的html中就能直接得到值了

    {{info}} ===> father to child

 

二、子传父

  方法一:@Output

  1. 在子组件中导入Output 和 EventEmitter

    import {Output, EventEmitter } from '@angular/core';

  2. 并且通过@Output实例化要传递向父组件的消息

    @Output() private outer = new EventEmitter();

    public chtofather = 'child to father';

  3. 给子组件添加点击事件,点击的时候将数据传递给父组件

    handlerClick() {

    this.outer.emit(this.chtofather)

    }

    <p (click)="handlerClick()"></p>
  4. 在父组件html中绑定自定义事件

    <app-test (outer) = "handlerChild($event)"></app-test>

  5. 在父组件的ts中通过刚刚绑定的自定义事件中的event就可以获取到了

    handlerChild(e) {

    console.log(e)

    }


  方法二:@ViewChild

  1. 在父组件html里的子组件标签上定义一个名字(#名字),相当于这个子组件的id名

    <app-son #son ></app-son>    
  2. 在父组件的ts中引入ViewChild

    import { Component, ViewChild } from '@angular/core';

  3. 并使用

    @ViewChild('son') son; 括号里面的名称要与子组件标签#后面的名称一致。

  4. 最后就可以调用子组件的数据和方法,如果子组件中有一个数据为viewChildinfo,就可以这样去调用

    getData() {

    this.mydata = this.son.viewChildinfo;

    }



来源:https://www.cnblogs.com/yanghana/p/12176713.html
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部