【发布时间】:2019-11-25 03:15:27
【问题描述】:
我有 3 个对象: - 第一个组件 - 连接服务 - 第二个组件
折叠/展开时的第一个组件应通过服务展开/折叠第二个组件。
在服务中,我有函数 toggle(),它应该只更改 boolean isOpen 的 bool 变量。在它旁边,我还有其他函数 getIsOpen(),返回类型为 Observable。代码如下所示:
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/internal/Observable';
import { of } from 'rxjs/internal/observable/of';
@Injectable()
export class ConnectService {
public isOpen = false;
public toggle(): void {
this.isOpen = !this.isOpen;
console.log('Im inside toggle');
}
public getIsOpen(): Observable<boolean>{
console.log('Im inside getIsOpen');
return of(this.isOpen);
}
}
在第二个组件中我尝试订阅:
public ngOnInit(): void {
this.connectionService.getIsOpen().subscribe(x => this.isFirstComponentExpanded = x);
}
但只有在页面加载后,点击后,第二个组件没有折叠或展开。如何在没有事件发射器的情况下监听服务内部的每一个变化(我需要避免那里的任何事件发射器,只有可观察的、订阅和主题)。
【问题讨论】:
-
嗯,我有和你一样的实现,但......不工作。该死的......也许有一个问题,我认为有其他东西阻止了这个,但是如何:/
-
从您的实现中创建一个堆栈闪电战。
-
要添加的文件太多,但我有 1 对 1 并且在 stackblitz 上它工作正常,有我想要的 console.logs,内部应用程序无效。
-
也许问题出在位置上?第一个组件与第二个组件是不同模块的一部分
标签: angular typescript service rxjs observable