Angular:组件之间的通信@Input、@Output和ViewChild
①父组件给子组件传值
1、父组件:
ts:
export class HomeComponent implements OnInit {
public hxTitle = '我是首页的头部'; constructor() { }
ngOnInit(): void {
} run(): void {
alert('我是父组件的方法');
} } html:
<app-header [hxTitle222]="hxTitle" [run]="run" [home]='this'></app-header>
2、子组件:
ts:
import { Component, OnInit, Input } from '@angular/core'; @Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.less']
})
export class HeaderComponent implements OnInit { @Input() hxTitle222: any;
@Input() run: any;
@Input() home: any;
constructor() { } ngOnInit(): void {
}
getPRun(): void {
this.run();
this.home.run();
console.log(this.home);
} } html:
<p>{{hxTitle222}}</p>
<button (click)="getPRun()">我要执行父组件的方法</button>
②子组件给父组件传值
1、子组件:
ts:
import { Component, OnInit, Output, EventEmitter } from '@angular/core'; @Component({
selector: 'app-newschild',
templateUrl: './newschild.component.html',
styleUrls: ['./newschild.component.less']
})
export class NewschildComponent implements OnInit {
public hxMsg = '我是新闻孩子的信息';
@Output() hxMsg2 = new EventEmitter();
constructor() { } ngOnInit(): void {
} run(): void {
alert('我是新闻孩子的run方法');
} hxRun(): void {
this.hxMsg2.emit(this.run); //广播方法
}
} html:
<button (click)="hxRun()">我要触发事件,并将值传给父组件</button>
2、父组件:
ts:
import { Component, OnInit} from '@angular/core'; @Component({
selector: 'app-news',
templateUrl: './news.component.html',
styleUrls: ['./news.component.less']
})
export class NewsComponent implements OnInit { constructor() { } ngOnInit(): void {
} getRun2(e): void {
console.log(e);
}
} html:
<app-newschild (hxMsg2)="getRun2($event)"></app-newschild>
③父组件拿到子组件中的属性或方法之@ViewChild
1、子组件:ts中定义一些属性和方法
2、父组件:
ts:
import { Component, OnInit, ViewChild } from '@angular/core'; @Component({
selector: 'app-news',
templateUrl: './news.component.html',
styleUrls: ['./news.component.less']
})
export class NewsComponent implements OnInit {
@ViewChild('newschild') newschild: any; constructor() { } ngOnInit(): void {
} getMsg(): void {
alert(this.newschild.hxMsg); //子组件中定义的属性
} getRun(): void {
this.newschild.run(); //子组件中定义的方法
} } html:
<button (click)="getMsg()">获取子组件的msg</button>
<button (click)="getRun()">获取子组件的run方法</button>
<app-newschild #newschild></app-newschild>
Angular:组件之间的通信@Input、@Output和ViewChild的更多相关文章
- angular组件之间的通信
一.组件创建 直接使用 ng g component 的命令创建组件,会自动生成组件所需的文件,方便快捷. // 父组件 ng g component parent // 子组件 ng g compo ...
- Angular组件之间通讯
组件之间会有下列3种关系: 1. 父子关系 2. 兄弟关系 3. 没有直接关系 通常采用下列方式处理(某些方式是框架特有)组件间的通讯,如下: 1父子组件之间的交互(@Input/@Output/模板 ...
- ionic2+Angular 依赖注入之Subject ——使用Subject来实现组件之间的通信
在Angular+ionic2 开发过程中,我们不难发现,页面之间跳转之后返回时是不会刷新数据的. 场景一:当前页面需要登录之后才能获取数据--去登录,登录成功之后返回--页面需要手动刷新才能获取到数 ...
- angular组件间的通信(父子、不同组件的数据、方法的传递和调用)
angular组件间的通信(父子.不同组件的数据.方法的传递和调用) 一.不同组件的传值(使用服务解决) 1.创建服务组件 不同组件相互传递,使用服务组件,比较方便,简单,容易.先将公共组件写在服务的 ...
- react8 组件之间的通信
<body><!-- React 真实 DOM 将会插入到这里 --><div id="example"></div> <!- ...
- vue 基础-->进阶 教程(3):组件嵌套、组件之间的通信、路由机制
前面的nodejs教程并没有停止更新,因为node项目需要用vue来实现界面部分,所以先插入一个vue教程,以免不会的同学不能很好的完成项目. 本教程,将从零开始,教给大家vue的基础.高级操作.组件 ...
- vue工程利用pubsub-js实现兄弟组件之间的通信
前言 项目是基于vue-cli创建的,不会搭建vue开发环境的同学可以百度,这里不再赘述. 步骤流程 vue项目搭建完成之后的文件图如下: 我的上一篇博客已经详细叙述vue工程中各个文件的作用,不清楚 ...
- React 学习(六) ---- 父子组件之间的通信
当有多个组件需要共享状态的时候,这就需要把状态放到这些组件共有的父组件中,相应地,这些组件就变成了子组件,从而涉及到父子组件之间的通信.父组件通过props 给子组件传递数据,子组件则是通过调用父组件 ...
- vuex-- Vue.的中心化状态管理方案(vue 组件之间的通信简化机制)
vuex-- Vue.的中心化状态管理方案(vue 组件之间的通信简化机制) 如果你在使用 vue.js , 那么我想你可能会对 vue 组件之间的通信感到崩溃 .vuex就是为了解决组件通信问题的. ...
随机推荐
- go-zero之web框架
go-zero 是一个集成了各种工程实践的 web 和 rpc 框架,其中rest是web框架模块,基于Go语言原生的http包进行构建,是一个轻量的,高性能的,功能完整的,简单易用的web框架 服务 ...
- ceph客户端服务端属性匹配关系
ceph的server是定期会发布版本,而它的客户端是放到linux 内核当中的,一些属性的支持是依赖于内核版本的,这样就存在一些问题,一些功能后端支持,而客户端旧了:还有可能是客户端用的很新的内核, ...
- Canvas实现放大镜效果完整案例
本文主要记录 canvas 在图像.文字处理.离屏技术和放大镜特效的实现过程中使用到的API.先看下效果吧: 一张模糊的图片: 鼠标点击任意位置,产生放大效果: 哇塞~ 一个帅哥,哈哈哈哈~ 1.显示 ...
- docker搭建渗透环境并进行渗透测试
目录 docker简介 docker的安装 docker.centos7.windows10(博主宿主机系统)之间相互通信 -docker容器中下载weblogic12c(可以略过不看) docker ...
- 来看看面试必问的HashMap,一次彻底帮你搞定HashMap源码
HashMap结构 数组+链表+红黑树 链表大于8转红黑树,红黑树节点数小于6退回链表. 存放的key-value的Node节点 static class Node<K,V> implem ...
- 02python开发之基本运算符
02 python开发之基本运算符 目录 02 python开发之基本运算符 2 基本运算符 2.1 算数运算符 2.1.1 种类 2.1.2 用法 2.2 比较运算符 2.2.1 种类 2.2.2 ...
- zabbix的搭建及操作(2)监控windows10及网络设备
实验环境 配置完成的Server端 Web --详情点击 windows10 192.168.10.1 (与虚拟机同一Vmnet的IP地址)必须关闭防火墙 网络设备GNS 192.168.10.50 ...
- 详解FL Studio压缩器——Fruity Limiter(下)
Hello!小伙伴们又见面啦-接上一篇,本篇咱们继续讲解音乐编曲软件FL Studio20压缩器内容. 包络"ENVELOPE"中包含三个旋钮,它们都有什么作用呢?一起来揭晓吧! ...
- 在FL Studio中如何做出渐入的人声效果
当我们在拿到一段人声并想把它加入歌曲中时,如果我们发现人声没有渐入的效果,直接加入到歌曲里出现会变得很突兀的话,我们就需要用到这篇文章所介绍的方法,给人声加上一个渐入的效果. 1. 找到我们需要处理的 ...
- Shell编程规范:Don't use ls | grep
目录 一.背景 二.ShellCheck的规范 三.修改写法 1.ls | grep file 2.ls | grep regexp 3.ls | grep -v multi 四.最后 五.参考 一. ...