使用服务不工作的两个组件angular 6/7之间的交互可以通过以下方式实现:
以下是一个示例代码:
在共享服务中定义共享数据和方法:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable()
export class SharedService {
private dataSubject = new BehaviorSubject<string>(''); // 定义一个BehaviorSubject来存储共享数据
public data$ = this.dataSubject.asObservable(); // 将BehaviorSubject转换为Observable供组件订阅
setData(data: string) {
this.dataSubject.next(data); // 修改共享数据
}
}
在组件中使用共享服务:
import { Component, OnInit } from '@angular/core';
import { SharedService } from 'path/to/shared.service';
@Component({
selector: 'app-component1',
template: `
<h1>Component 1</h1>
<input [(ngModel)]="data" (ngModelChange)="updateData()" placeholder="Enter data">
`
})
export class Component1 implements OnInit {
data: string;
constructor(private sharedService: SharedService) {}
ngOnInit() {
this.sharedService.data$.subscribe(data => {
this.data = data; // 订阅共享数据的变化
});
}
updateData() {
this.sharedService.setData(this.data); // 修改共享数据
}
}
import { Component, OnInit } from '@angular/core';
import { SharedService } from 'path/to/shared.service';
@Component({
selector: 'app-component2',
template: `
<h1>Component 2</h1>
<p>Data from Component 1: {{ data }}</p>
`
})
export class Component2 implements OnInit {
data: string;
constructor(private sharedService: SharedService) {}
ngOnInit() {
this.sharedService.data$.subscribe(data => {
this.data = data; // 订阅共享数据的变化
});
}
}
在上述示例中,Component1和Component2通过共享服务SharedService实现了数据的交互。当Component1中的输入框的值发生变化时,会调用updateData方法来修改共享数据,并通知Component2更新显示的数据。
推荐的腾讯云相关产品:腾讯云云服务器(CVM)和腾讯云对象存储(COS)。
DB・洞见
腾讯云“智能+互联网TechDay”华南专场
API网关系列直播
云+社区沙龙online [云原生技术实践]
Elastic 中国开发者大会
GAME-TECH
云+社区技术沙龙[第28期]
北极星训练营
云+社区技术沙龙[第16期]
云+社区技术沙龙[第9期]
云+社区技术沙龙[第7期]
领取专属 10元无门槛券
手把手带您无忧上云