我正在使用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/

10-11 13:05