【Angular】Angula6中的组件通信
栏目: JavaScript · 发布时间: 7年前
内容简介:本文主要介绍 Angular6 中的组件通信父组件绑定信息
Angula6_组件通信
本文主要介绍 Angular6 中的组件通信
一、父子组件通信
1.1 父组件向子组件传递信息
方法一 在父组件上设置子组件的属性
父组件绑定信息
<app-child childTitle="可设置子组件标题"></app-child>
子组件接收消息
import { Component, OnInit, Input } from '@angular/core';
@Input childTitle: string;
方法二 父组件调用子组件的方法
父组件触发消息
<app-child #child></app-child> <button (click)="child.childPrint()"></button>
子组件接收消息
childPrint() {
alert("来自子组件的打印");
}
1.2 子组件向父组件传递信息
方法一 使用 EventEmitter
子组件使用 EventEmitter 传递消息
import { Component, OnInit, Output, EventEmitter } from '@angular/core';
...
@Output() initEmit = new EventEmitter<string>();
ngOnInit() {
this.initEmit.emit("子组件初始化成功");
}
...
父组件接收消息
<app-child (initEmit)="accept($event)"></app-child>
accept(msg:string) {
alert(msg);
}
方法二 使用 ViewChild
子组件提供传递参数的函数
sendInfo() {
return 'Message from child 1.';
}
父组件使用 ViewChild 触发并接收信息
<button (click)="getInfo()">获取子组件1号的信息</button>
<h2>{{ info }}</h2>
import { Component, OnInit, ViewChild } from '@angular/core';
...
@ViewChild(ChildFirstComponent) private childcomponent: ChildFirstComponent;
getInfo() {
this.info = this.childcomponent.sendInfo();
}
二、非父子组件通信
方法一 service
缺点:需要双向的触发(发送信息 / 接收信息)
service.ts
import { Component, Injectable, EventEmitter } from "@angular/core";
@Injectable()
export class myService {
public info: string = "";
constructor() {}
}
组件 1 向 service 传递信息
import { myService } from '../../service/myService.service';
...
constructor(
public service: myService
) { }
changeInfo() {
this.service.info = this.service.info + "1234";
}
...
组件 2 从 service 获取信息
import { myService } from '../../service/myService.service';
...
constructor(
public service: myService
) { }
showInfo() {
alert(this.service.info);
}
...
方法二 使用 BehaviorSubject
优点:真正的发布订阅模式,当数据改变时,订阅者也能得到响应
service
import { BehaviorSubject } from 'rxjs';
...
public messageSource = new BehaviorSubject<string>('Start');
changemessage(message: string): void {
this.messageSource.next(message);
}
组件调用 service 的方法传信息和接收信息
changeInfo() {
this.communication.changemessage('Message from child 1.');
}
ngOnInit() {
this.communication.messageSource.subscribe(Message => {
window.alert(Message);
this.info = Message;
});
}
三、其他的通信方式
- 路由传值
- cookie、session、storage
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
算法导论(原书第3版)
Thomas H.Cormen、Charles E.Leiserson、Ronald L.Rivest、Clifford Stein / 殷建平、徐云、王刚、刘晓光、苏明、邹恒明、王宏志 / 机械工业出版社 / 2012-12 / 128.00元
在有关算法的书中,有一些叙述非常严谨,但不够全面;另一些涉及了大量的题材,但又缺乏严谨性。本书将严谨性和全面性融为一体,深入讨论各类算法,并着力使这些算法的设计和分析能为各个层次的读者接受。全书各章自成体系,可以作为独立的学习单元;算法以英语和伪代码的形式描述,具备初步程序设计经验的人就能看懂;说明和解释力求浅显易懂,不失深度和数学严谨性。 全书选材经典、内容丰富、结构合理、逻辑清晰,对本科......一起来看看 《算法导论(原书第3版)》 这本书的介绍吧!