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就是为了解决组件通信问题的. ...
随机推荐
- asyncio多进程+pyppeteer浏览器控制+pyquery解析实现爬虫demo
import asyncio from pyppeteer import launch from pyquery import PyQuery as pq async def main(): brow ...
- 使用Java将XSL和XML文件输出为HTML(XSL学习笔记二)
XSL 指扩展样式表语言(EXtensible Stylesheet Language),前面一篇博客介绍了使用XSL即可直接将XML输出为HTML片段被浏览器解析,但是这样在web应用中浏览器的解析 ...
- Android10_原理机制系列_Activity窗口添加到WMS过程
前言 首先看一个Android界面的布局层次结构,最直观的看一下: 我们能清晰看到,这个界面分成了3部分:顶部状态栏(statusbar).底部导航栏(navigationbar).应用界面. 题外话 ...
- Dnscat2实现DNS隐蔽隧道反弹Shell
DNS介绍 DNS是域名系统(Domain Name System)的缩写,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被 ...
- 微信公众号获取openid(php实例)
微信公众号获取openid 公众号获取openid的方法跟小程序获取openid其实是一样的,只是code获取的方式不一样 小程序获取code: 用户授权登录时调用wx.login即可获取到code ...
- 算法学习笔记:Kosaraju算法
Kosaraju算法一看这个名字很奇怪就可以猜到它也是一个根据人名起的算法,它的发明人是S. Rao Kosaraju,这是一个在图论当中非常著名的算法,可以用来拆分有向图当中的强连通分量. 背景知识 ...
- springboot同一项目部署多实例
添加 -Dserver.port=xxxx 将配置文件放在nacos注册中心时,要记得在启动第二个实例记得把原来端口注释掉,如果配置文件在本地就不必注释掉了
- css3系列之text的常用属性 和 Multi-column(多列)
text(文本) white-space: word-break word-wrap/overflow-wrap text-align: word-spacing letter-spacing tex ...
- 人人都能学会系列之ThreadLocal
1.概览 本文我们来看下java.lang包中的ThreadLocal,它赋予我们给每个线程存储自己数据的能力. 2.ThreadLocal API ThreadLocal允许我们存储的数据只能被特定 ...
- CentOS基础命令使用技巧-1
less用法 g快速返回文件首部 G快速到文本最末端 /当前行向下搜索 ?当前行向上搜索 n显示下一个 q退出 cp用法 r拷贝一个目录必须加这个 rm用法 r删除目录 f强制删除,r后面删除不存在的 ...