父子组件交互方式,这里介绍主要的三种方式

1.事件传值

下面以列表页和分页组件举例。

list.component.html

 <pagination *ngIf="pageParams?.total>0" [pageParams]="pageParams" (changePageData)="changePageData($event)"></pagination>
2 /* 这里的ngIf是为了控制total,当total从接口获取到了返回值以后再显示分页组件 */

list.component.ts

 @Component({
templateUrl: './list.component.html'
})
export class ListComponent {
changePageData(event) {
this.pageParams = event;
this.getPageData() // 从分页组件获取page参数后重新获取list数据
}
}

pagination.component.html

import { Component, OnInit, OnChanges, Input, Output, EventEmitter } from '@angular/core';
@Component({
template: `<button (click)="nextPage()">点我下一页<`
})
export class PaginationComponent {
@Input() pageParams: any;
// EventEmitter是一个帮你实现观察者模式的对象,用于管理一系列订阅者并向其发布事件的对象
@Output() changePageData: EventEmitter<any> = new EventEmitter;
nextPage() {
this.pageParams.pageNo += 1;
this.changePageData.emit(this.pageParams) // 广播事件给父组件,触发父组件事件,可以emit参数过去
}
}

2.局部变量

下面使用简单的例子来说明模板局部变量的使用。

2.1.子组件childComponent

child.component.ts

import { Component } from '@angular/core';
@Component({
template: ``
})
export class ChildComponent {
show1(event) {
alert('从父组件传来的值是:'+event);
}
}

2.2.父组件parentComponent

parent.component.ts

import { Component } from '@angular/core';
@Component({
template: `
<button (click)="child.show1(str)">点我调用子组件事件</button>
<child-selector #child></child-selector>
`
})
export class ParentComponent {
str: string = '子组件你好!'
}

3.@ViewChild

Angular2 之父子组件交互方式的更多相关文章

  1. 三大前端框架(react、vue、angular2+)父子组件通信总结

    公司业务需要,react.vue.angular都有接触[\无奈脸].虽然说可以拓展知识广度,但是在深度上很让人头疼.最近没事的时候回忆各框架父子组件通信,发现很模糊,于是乎稍微做了一下功课,记录于此 ...

  2. angular2 里父子组件传值的坑

    1.如果传的是基本类型的值,子组件里改变该值,父组件无变化 2.如果传的是对象,子组件里改变对象里的变量,父组件会变化 3.如果传的是函数,this不会继续指向父组件对象了,如果需要this指向父组件 ...

  3. Angular2 父子组件通信方式

    https://www.jb51.net/article/133868.htm 这次给大家带来Angular2 父子组件通信方式,使用Angular2 父子组件通信方式的注意事项有哪些,下面就是实战案 ...

  4. Angular06 组件、模块、父子组件之间的数据传递

    1 创建组件 进入到angular项目的根目录,执行如下命令 ng g component test-component 注意:执行完上述命令后在angular项目的src/app文件夹下就会多出一个 ...

  5. 关于React的父子组件通信等等

    //==================================================此处为父子组件通信 1.子组件调用父组件: 父组件将子组件需要调用方法存入props属性内,子组 ...

  6. 第四节:Vue表单标签和组件的基本用法,父子组件间的通信

    vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...

  7. Vue2.x中的父子组件相互通信

    业务场景:(这里指的是直接父子级关系的通信) 美女(子组件)将消息发送给大群(父组件) 大群(父组件)收到美女发送的消息后再回个信息给美女(子组件) 父组件 template <template ...

  8. React学习(一)父子组件通讯

    React父子组件之间通讯,利用props和state完成,首先React是单向数据流,父组件可以向子组件传递props: 实现父子组件双向数据流整体的思路是: 1,父组件可以向子组件传递props, ...

  9. Vue 非父子组件通信

    组件是Vue核心的一块内容,组件之间的通信也是很基本的开发需求.组件通信又包括父组件向子组件传数据,子组件向父组件传数据,非父子组件间的通信.前两种通信Vue的文档都说的很清楚,但是第三种文档上确只有 ...

随机推荐

  1. tensorflow的简单操作

    import tensorflow as tf c1 = tf.constant([[3,3]]) c2 = tf.constant([[3],[2]]) product = tf.matmul(c1 ...

  2. Java延时器

    package listener; import java.util.Timer; import java.util.TimerTask; public class Timeer { /** * sc ...

  3. Weekly Contest 119

    第一题: 973. K Closest Points to Origin  We have a list of points on the plane.  Find the K closest poi ...

  4. composer安装doctrine/dbal

    composer安装doctrine/dbal composer安装doctrine/dbal,安装不成功,使用的安装命令为官方提供命令“composer require doctrine/dbal” ...

  5. VMware centos7 如何配置静态ip并且可上网

    注:此贴使用NAT方式配置上网模式. 1.设置虚拟机的网络适配器为NAT模式: 2.修改VMware的“虚拟网络编辑器”: 打开后选择NAT模式,勾选,然后点击NAT设置: NAT默认设置了188网段 ...

  6. [Python数据挖掘]第7章、航空公司客户价值分析

    一.背景和挖掘目标 二.分析方法与过程 客户价值识别最常用的是RFM模型(最近消费时间间隔Recency,消费频率Frequency,消费金额Monetary) 1.EDA(探索性数据分析) #对数据 ...

  7. 我应该如何在Pycharm中去运行别人的Django项目

    django数据库迁移,本地运行 前言: 从网络上下载好django项目后,在本地用pycharm导入后,并不能运行.此时我们需要添加库和创建数据库. 零:这里是一个基于django写的小项目,可以作 ...

  8. 利用 Charles Proxy 下载旧版本 iOS App

    一.软件准备 1.旧版本 iTunes1.IPSW Downloads:https://ipsw.me/2.百度网盘链接: https://pan.baidu.com/s/1PO9Z12o-rqZ_J ...

  9. navicat premium 破解版

    下载链接:https://pan.baidu.com/s/1oNwtr2hdUN9F452xkji0aQ

  10. time series 时间序列 | fractional factorial design 部分要因试验设计

    作业: 1) A plot of data from a time series, which shows a cyclical pattern – please show a time series ...