angular组件间的通信(父子、不同组件的数据、方法的传递和调用)
angular组件间的通信(父子、不同组件的数据、方法的传递和调用)
一、不同组件的传值(使用服务解决)
1、创建服务组件
不同组件相互传递,使用服务组件,比较方便,简单,容易。先将公共组件写在服务的组件里面,如果其他组件使用的话,直接调用即可。
创建服务组件:ng g service 路径(例如:services/storage)
2、配置服务组件:
(1)、在app.module.ts里面配置,引用service
import {StorageService} from "./services/storage.service";
(2)、配置服务(StorageService 是服务的类名)
providers: [StorageService],//所需要的服务
3、使用服务组件:
(1)、需要在使用服务的文件里,引用服务组件(注意路径问题)
import {StorageService} from "../../services/storage.service";
(2)、构造函数初始化
constructor(public storage:StorageService) {
// let s=this.storage.get()
}
(3)、封装服务的组件程序(自己封装为建立、获取、移除)
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class StorageService {
constructor() { }
set(key:string,value:any){
localStorage.setItem(key,JSON.stringify(value))
}
get(key){
return JSON.parse(localStorage.getItem(key))
}
remove(key){
localStorage.removeItem(key)
}
}
(4)、调用使用(调用很简单,直接写就ok)
this.storage.set('key',value)
this.storage.get('key')
this.storage.remove('key')
4、写完可以查看是否成功(自己敲的小东西,直接看效果吧)

二、父子组件传值
1、父组件向子组件传值(使用Input)
(1)、子组件引入Input
import { Component, OnInit,Input } from '@angular/core';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.scss']
})
export class HeaderComponent implements OnInit {
@Input() title:any;
@Input() home:any;
@Input() run:any;
constructor() { }
ngOnInit(): void {
}
}
(2)、父组件使用子组件时对子组件进行传值(在父组件里)
注:title是字符串、run是方法、home是整个父组件
父组件Html文件
<app-header [title]="title" [run]="run" [home]="this"></app-header>
父组件Ts文件
export class HomeComponent implements OnInit {
public title:string="首页组件的标题"
constructor() { }
ngOnInit(): void {
}
keydown(element){
if(element.target.keyCode=13){
console.log('值:',element.target.keyCode)
this.title='这是已经改变的标题'
}
}
run(){
alert('我是父组件的run方法')
}
}
2、子组件向父组件传值
1)、使用ViewChild
(1)、引用ViewChild
父组件的TS
import { Component, OnInit ,ViewChild,ElementRef} from '@angular/core';
@ViewChild('foot') foot:any
父组件的Html
<app-foot #foot></app-foot>
(2)、调用
this.foot.名字(数据或者是方法等);
2)、使用Output
(1)、引用output、EventEmitter
import { Component, OnInit,Output,EventEmitter } from '@angular/core';
(2)、初始化output
@Output() private outer=new EventEmitter()
(3)、广播数据(这里我是加的按钮,也可以使用钩子开始就广播,也可以使用某种触发器)
sendmessage(){
this.outer.emit('我是子组件要广播的数据')
}
(4)、调用传值
父组件html
<app-foot (outer)="run($event)"></app-foot>
父组件Ts
run($e){
console.log('shuju',$e)
//alert($e)
}
(5)效果

以上,所有都是自己学习使用,请勿盗用,希望可以对你的学习有所帮助,感谢。
angular组件间的通信(父子、不同组件的数据、方法的传递和调用)的更多相关文章
- Vue2不使用Vuex如何实现兄弟组件间的通信
在一些正规的大型项目的企业级开发过程中我们一般会引入Vuex来对Vue所有组件进行状态管理,可以轻松实现各组件间的通信.但是有时候做做自己的小项目,没有必要使用Vuex时,如何简单的实现组件间的通信? ...
- 第四节:Vue表单标签和组件的基本用法,父子组件间的通信
vue表单标签和组件的基本用法,父子组件间的通信,直接看例子吧. <!DOCTYPE html> <html> <head> <meta charset=&q ...
- React中父子组件间的通信问题
1.https://blog.csdn.net/sinat_17775997/article/details/59103173 (React中父子组件间的通信问题)
- ZeroMQ(java)之I/O线程的实现与组件间的通信
算是开始读ZeroMQ(java)的代码实现了吧,现在有了一个大体的了解,看起来实现是比较的干净的,抽象什么的不算复杂... 这里先来看看它的I/O线程的实现吧,顺带看看是如何实现组件的通信的.... ...
- vuejs单一事件管理组件间的通信
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- (尚033)Vue_案例_slot(组件间的通信4:slot)
1.组件间的通信4:slot(slot:插槽,就是一个占位) slot用于标签反复使用很多次 1.1理解 此方式用于父组件向子组件传递标签数据, 其他为数据通信 外面组件向里面组件传递标签进去,直接拿 ...
- Angular 4 组件间的通信
一.输入属性(父组件与子组件通信) 1. 创建工程 ng new demo1 2.创建order组件 ng g component order 3. 在order组件里定义输入属性 order组件的h ...
- Vue 父子组件间的通信
前言 在 Vue 项目中父子组件的通信是非常常见的,最近做项目的时候发现对这方面的知识还不怎么熟练,在这边做一下笔记,系统学习一下吧. 1 父组件传值给子组件 1.1 传值写法 父组件传值给子组件,这 ...
- Vue父子组件间的通信
父组件通过 props 向下传递数据给子组件,子组件通过 events 向上给父组件发送消息. 父组件: <div> <div style="background:#344 ...
随机推荐
- Git-【技术干货】工作中Git的使用实践
Git-[技术干货]工作中Git的使用实践 置顶 2019-09-17 21:02:16 web洋仔 阅读数 11444更多 分类专栏: Git 版权声明:本文为博主原创文章,遵循CC 4.0 B ...
- 痞子衡嵌入式:关于i.MXRT中FlexSPI外设lookupTable里配置Normal read的一个小误区
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT中FlexSPI外设lookupTable里配置Normal read的一个小误区. 关于串行四线NOR Flash,当其作 ...
- 06.ElementUI 2.X 源码学习:源码剖析之工程化(一)
0x.00 前言 在用了5章篇幅 ElementUI源码学习:从零开始搭建Vue组件库汇总 讲解了如何编写一个组件.发布npm以及生成展示文档之后.接下来将分析Element项目的代码结构,学习其工程 ...
- Jenkins+gitlab发布Django程序
Jenkins+gitlab发布Django程序 一. 二. 三.shell # !/bin/bash cd /root/upload_file #git add . #git commit -m ' ...
- Go语言协程并发---timer秒表与定时器
秒表 package main import ( "fmt" "time" ) /*每秒大喊我要去浪,共9次,然后退出计时*/ func main() { va ...
- Go语言的GOPATH详解
在GOLAND中设置GOPATH: 设置好路径后,并不是直接在这个路径下面写代码文件就行了 GO会识别GOPATH下的src目录,而真正的引用的包名,是src下的目录名,然后才是代码模块名 目录结构如 ...
- 批量执行异步任务CompletionService
批量执行异步任务CompletionService 核心思想,就是将异步结果放入到阻塞队列中,然后再消费队列,实现异步任务批量执行 接口方法说明 Future<V> submit(Call ...
- 构建编译TVM方法
构建编译TVM方法 本文提供如何在各种系统上构建和安装TVM包的说明.它包括两个步骤: 1. 首先从C代码构建共享库( libtvm.so for linux, libtvm.dylib fo ...
- APA自动泊车系统
APA自动泊车系统 1. 半自动泊车 自动泊车又称为自动泊车入位,它对于新手来说是一项相当便捷的配置,对于老手来说也省了些不少力气.那么自动泊车的原理是什么呢?能想怎么停就怎么停,想停哪儿就停哪儿吗? ...
- VAE变分自编码器实现
变分自编码器(VAE)组合了神经网络和贝叶斯推理这两种最好的方法,是最酷的神经网络,已经成为无监督学习的流行方法之一. 变分自编码器是一个扭曲的自编码器.同自编码器的传统编码器和解码器网络一起,具有附 ...