在Angular库中使用RxJS

时间:2019-03-22 13:06:29

标签: angular rxjs

我创建一个角度库“ mylib”

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

例如

  currentLanguage = new BehaviorSubject<string>(null);

我在mylib中有一个组件,该组件将在select输入上的change事件上设置语言。

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

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

如果更改选择输入上的值,则可以看到该事件,但是,没有下一个值发送到BehaviorSubject,并且控制台中没有错误。因此,我无法从mylib的组件发出值更改。

但是...如果从myapp发出一个下一个值..它可以工作...

所以我的问题是,为什么不能从自定义角度库的组件中使用“ next”,而只能从使用该库的组件中使用...,又可以从应用程序的导入该组件的任何组件中图书馆服务?

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

 imports: [CommonModule, FormsModule, BehaviorSubject]

犯错

一个主意? :)

谢谢

迈克

1 个答案:

答案 0 :(得分:0)

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

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

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

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

例如:

import { myService } from 'myLib';