我创建一个角度库“ 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]
犯错
一个主意? :)
谢谢
迈克
答案 0 :(得分:0)
问题可能出在lib和应用程序使用服务的两个实例。
确保在服务上指定了“ providedIn:'root'”。
例如:
@Injectable({
providedIn: 'root',
})
export class myService {
.....
}
还要确保服务是使用'dist'目录中的库名而不是相对路径导入的。
例如:
import { myService } from 'myLib';