我正在使用Angular6,以下是我的场景:
我试图通过服务在Component1和COmponent2之间传递信息。我看到该服务从Component1接收消息,但是Component2没有收到传递的消息。
在第1页中:
//当鼠标移动到特定区域时,此方法称为
actionMove: function(evt,obj) {
var messService = new MessService();
messService.sendMessage('Sending message from Component1 to Component2!');
}
inMessService文件:
import { Injectable } from '@angular/core';
import { Observable, Subject } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class MessService {
private subject = new Subject<any>();
sendMessage(message: string) {
console.log("*** service got message from component 1 ***");
this.subject.next({ text: message });
}
getMessage(): Observable<any> { // this communicates with component2
console.log("*** component 2 trying to get message ***");
return this.subject.asObservable();
}
}
在Component2中:
constructor(private messService: MessService) {
// subscribe to message service method
this.subscription = this.messService.getMessage()
.subscribe(message => { this.message = message; });
您能帮我了解我在想什么吗?
最佳答案
fridoo的评论是它的核心-
要在多个组件中使用服务,您需要利用angular的依赖注入。您想要像在component1中的component2中那样在构造函数中引用您的服务类,因此这两个组件都使用相同的MessService。
您可以创建一个空的构造函数,例如
constructor(private messService: MessService) {}
注入服务-您是否尝试过这样做?
关于javascript - 解决可观察和订阅,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54718294/