【发布时间】:2019-07-10 03:01:47
【问题描述】:
我正在使用 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();
}
}
在组件 2 中:
constructor(private messService: MessService) {
// subscribe to message service method
this.subscription = this.messService.getMessage()
.subscribe(message => { this.message = message; });
你能帮我理解我错过了什么吗?
【问题讨论】:
-
为什么在组件1的函数中新建一个MessService而不使用
constructor(private messService: MessService)? -
我的组件1结构如下: export class ComponentTemplate { create(){ //............ ........// actionMove: function (evt,obj) { var messService = new MessService(); messService.sendMessage('从 Component1 向 Component2 发送消息!'); } } }
标签: javascript typescript rxjs angular6