angular - 在 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]
犯错误
一个主意 ?:)
谢谢
麦克风
解决方案
问题可能是 lib 和应用程序正在使用该服务的两个实例。
确保在您的服务中指定了“providedIn: 'root'”。
例如:
@Injectable({
providedIn: 'root',
})
export class myService {
.....
}
还要确保使用“dist”目录中的库名称导入服务,而不是使用相对路径。
例如:
import { myService } from 'myLib';
推荐阅读
- splunk - Splunk中如何根据JSON字段结构统计事件的数量
- reactjs - mapDispatchToProps 类型挑战(typescript react-redux)
- algorithm - 有没有办法在集合中找到相同的值
- javascript - 打字稿 - 类型“字符串”不能用于索引类型
- javascript - 为什么 javascript document.getElementByID.value 不会写入我的字段?
- if-statement - 使用批处理脚本将 mkv 更改为 mp4
- c# - c#,将类文件导入主程序文件
- angular - yAxes 中具有相同 xAxes 的多个值
- postgresql - 如何从 postgres 触发器中的双表中使用 userenv 传递新的旧标识符
- javascript - 始终使用 TensorflowJS 获得相同的预测