如果在AppMdoule中调用,可观察服务为什么要创建第二个实例?

问题描述 投票:0回答:1

我创建了此服务:

@Injectable({ providedIn: 'root' })
export class HeaderService {
private _loggedIn = new BehaviorSubject<boolean>(false);
public isLoggedIn() {
    return this._loggedIn.asObservable();
  }
 public setLoggedIn(loggedIn: boolean) {
    this._loggedIn.next(loggedIn);
  }
}

我的Angular应用程序中有2个模块。主要一个和另一个。当我从属于setLoggedIn的组件中调用ÀppModule时,它没有使用与我通过HeaderComponent订阅Observable的isLoggedIn()中的服务实例相同的服务实例,但是当我调用update方法时在不属于ÀppModule的组件中,该组件称为订阅。正如我在Angular网站上用语法声明服务时所读的那样,它应该是Singleton,所以我现在很困惑。有人遇到过类似的问题吗?并成功修复。

angular observable angular-services
1个回答
0
投票

您需要从服务类中删除注入,您也要通过@Injectable装饰器对其进行注入。

请从您的服务类别的此行中将其删除。 @Injectable({ providedIn: 'root' })

应该看起来像下面的语句

@Injectable()
© www.soinside.com 2019 - 2024. All rights reserved.