首页 > 解决方案 > 在 Angular 库中使用 RxJS

问题描述

我创建了一个角度库“mylib”

我创建了一个使用来自 rxjs 的 BehaviorSubject Observable 的服务。

例如

  currentLanguage = new BehaviorSubject<string>(null);

我在 mylib 中有一个组件,它将在选择输入的更改事件上设置语言。

this.myService.currentLanguage.next('en'); 

在构建“mylib”并使用myapp...之后,我可以myService从 myapp 订阅。

如果我更改选择输入上的值,我可以看到事件,但是,没有下一个值发送到 BehaviorSubject,控制台中也没有错误。所以我不能从 mylib 的组件发出值变化。

然而......如果我从 myapp 我发出下一个值......它工作......

所以我的问题是为什么不能从自定义角度库的组件中使用“下一个”,但它来自使用库的组件......并且可以从导入库服务的应用程序的任何组件中使用?

也许它可能与 mylib.module.ts 中的 @NgModule 有关,有可能我必须在 imports Array 中导入 rxjs ?我试着

 imports: [CommonModule, FormsModule, BehaviorSubject]

犯错误

一个主意 ?:)

谢谢

麦克风

标签: angularrxjs

解决方案


问题可能是 lib 和应用程序正在使用该服务的两个实例。

确保在您的服务中指定了“providedIn: 'root'”。
例如:

@Injectable({
  providedIn: 'root',
})
export class myService {
.....
}

还要确保使用“dist”目录中的库名称导入服务,而不是使用相对路径。

例如:

import { myService } from 'myLib';

推荐阅读