angular11 - 如何通过服务在组件之间共享数据?
问题描述
我在组件之间共享信息时遇到问题。我想要做的是,在home.component.html
生成的数据中显示about.component.ts
. 操作是:通过 abutton
中的home.component.html
a ,调用 中home.component.ts
的函数,该函数调用 的函数,该函数从获取数据about-service.ts
的 中收集数据。about.component.html
about.component.ts
这是我的home.component.html
:
<button mat-menu-item (click)="goToAbout()">
<mat-icon svgIcon="logoBN"></mat-icon>
Acerca
</button>
这是我的home.component.ts
:
import { AboutComponent } from '../about/about.component';
export class HomeComponent {
public aboutInfo: AboutService;
goToAbout() {
.subscribe(emitData =>
}
}
从goToAbout()
函数中home.component.ts
我需要从函数中获取aboutBuild()
数据about.component.ts
:
这是我的about.component.ts
:
import { AboutService } from '';
export class AboutComponent {
ngOnInit() {
}
aboutBuild() {
......code.........
}
}
这是我的about.component.html
:
<header class="title-color" fxFlex>Build Info</header>
我在服务中创建了一个函数来尝试通信两个组件。
about-service.ts
:
observer = new Subject();
public subscriber$ = this.observer.asObservable();
emitData(aboutBuild) {
this.observer.next(aboutBuild);
}
但是我无法访问 的aboutBuild()
功能,about.component.ts
我需要在 中包含什么service
来通信这两个组件?
解决方案
AboutService 很好,您有一个公共订阅者和一个触发事件的功能。
你的 goToAbout() 在home.component.ts
:
export class HomeComponent {
constructor(public aboutService: AboutService) {}
goToAbout() {
let data = {key: 'value'};
this.aboutService.emitData(data);
}
}
然后你的about.component.ts
:
export class AboutComponent {
constructor(public aboutService: AboutService) {}
ngOnInit() {
this.aboutService.subscriber$.subscribe(data => {
this.aboutBuild(data);
});
}
aboutBuild(data) {
console.log(data)
}
}
推荐阅读
- macos - 无法从我的 Mac 上的 Genero Studio 连接到 Virtual Box Linux 环境中的 Informix 数据库服务器设置
- android - Android Navigation java.language.IllegalStateException 片段类未设置
- c# - 我使用“HttpContext.Current”,但调试时出现错误“HttpContext”不包含“Current”的定义
- firebase - Firebase init - 错误:意外的规则格式.rules
- ssh - 浏览器可以通过 ssh(ssh 隧道)进行本地端口隧道吗?
- google-apps-script - 希望创建一个可以提出问题的 Google 表单
- php - 从 Drupal 的后台执行一个 php 脚本
- react-native - 目前关于将数据传递到标签导航以进行反应导航的共识是什么?
- c# - 从模板(.oft 文件)发送电子邮件 - 使用 C# 的 Exchange 服务
- powershell - 将powershell脚本的结果导出到csv