JavaScript的Reactive Extensions(RxJS)是一组库,用于使用可观察集合和Array Extras样式组合来编写异步和基于事件的程序。
在服务器端渲染的 Angular 应用程序中使用 rxjs 间隔时如何解决水合错误?
我有一个 Angular 17 服务器端渲染应用程序,它使用 rxjs 间隔定期调用 API GET 端点。代码是这样的: 间隔(5000).管道( 开始于('
我想构建一个包装类,它在 Observable 的每个发出值之前和之后执行一些操作。 这是我想出的: 包装类 { 包装$:可观察...
在状态服务主题中存储悬停元素不会在订阅时发出任何数据 - 我做错了什么?
我有一个项目,其中包含日历、悬停指令和有状态的通信服务。我对我在这里所做的工作做了一个更简单的表示: https://stackblitz.com/edit/
我有一个带有贝宝按钮的页面,但有一半时间无法加载。我刚刚连续刷新了30次页面。连续交替工作9次,然后连续11次没有加载......
在我的应用程序中有大量的多步骤过程。想象一下类似的事情 “打开文档进行编辑,可以通过多种方式之一更改文档的状态。 用户是 a) 到...
创建一个 rxjs 管道,根据类型组合值,然后在 concatMap 中异步处理它们
我有一个 eventStream,它接受各种类型的事件并处理它们(通过 HTTP 将它们发送到服务器)。 从 'rxjs' 导入 { from, Observable }; 从 'rxjs/operators' 导入 { concatMap }; ...
具有 RxJs 值的 Angular Services 变量是正确的,但在函数调用时为 null
我有这项服务: @Injectable({ 提供于: 'root', }) 导出类BackgroundLayersService { 私人mapSubject =新BehaviorSubject(null); 地图$:可观察 我有这项服务: @Injectable({ providedIn: 'root', }) export class BackgroundLayersService { private mapSubject = new BehaviorSubject<Map | null>(null); map$: Observable<Map | null> = this.mapSubject.asObservable(); constructor(private mapService: MapService) { this.mapService.map$.subscribe((map: Map | null) => { console.log('Map updated in BackgroundLayersService:', map); this.mapSubject.next(map); }); } public map: Map | null; changeLayer(input: any) { console.log('test'); console.log(this.map); } } 它从另一个服务加载“地图”,这是另一个服务: @Injectable({ providedIn: 'root', }) export class MapService { constructor(private store: Store) { } @ViewChild('mapId') mapContainer: ElementRef; private mapSubject = new BehaviorSubject<Map | null>(null); map$ = this.mapSubject.asObservable(); initializeMap(): void { this.setMap( L.map('mapId', { layers: [], }).setView([1, 1], 6) ); } } 调用 setMap 时,第一个服务的构造函数控制台会记录正确的值。 然而,当调用changeLayer时,控制台日志显示map的值为null。 我不明白这是为什么,而且我似乎无法将此映射值传递给其他组件或服务。将不胜感激任何帮助。 相关信息:在调用changeLayer之前,this.map已更新为正确的值。 initializeMap 设置地图: initializeMap(): void { this.setMap( L.map('mapId', {} ); } 发生在这里: init = () => { this.mapService.initializeMap(); this.mapService.map$.subscribe((map) => { this.mapInstance = map; }); } 这里来自 subscribe 的 map 值也是正确的,稍后在组件中使用了 map 值并且不为 null。 这里运行无限循环,当您订阅行为主题时,订阅代码将被触发,如果您不希望它在第一次加载时触发,您可以使用主题,在其中调用 next 方法订阅,这会再次调用subscribe,然后next等等,请先摆脱无限循环! 所以无论设置什么值,我猜都会被无限循环删除!另一种选择可以如下所示! @Injectable({ providedIn: 'root', }) export class BackgroundLayersService { private mapSubject = new BehaviorSubject<Map | null>(null); map$: Observable<Map | null> = this.mapSubject.asObservable(); constructor(private mapService: MapService) { this.mapService.map$.subscribe((map: Map | null) => { // <-- infinite loop console.log('Map updated in BackgroundLayersService:', map); if(map) { // this if condition gets rid of the infinite loop! this.mapSubject.next(map); // <-- infinite loop } }); } public map: Map | null; changeLayer(input: any) { console.log('test'); console.log(this.map); } }
我应该在 RxJ 和 Angular 中为主题使用“$”符号后缀吗?
所以我有一个关于 RxJs 代码和 Angular 中 $ 符号后缀命名约定的问题。 在角度最佳实践文档和总体中,我发现我们应该使用 i...
是否自动处理 Angular/RxJS Observables 的取消订阅
我听说 Angular 会自动处理它自己的 Observables 的取消订阅,因此不需要手动取消订阅 observables。 我留下的印象是...
我有一个可观察的源,当您单击时会发出。我想制作一个像下一个弹珠图一样发出的运算符...... 也就是说,它在第一次单击时发出。然后,当你...
使用 Angular 和 Highcharts 并希望使用 RxJS 中的 fromEvent 来实现 legendItemClick
我将没有数据的系列添加到我的 Highchart 图表中,该图表最初不可见。单击图表旁边的图例时,会触发一个事件并请求该系列的数据并显示...
这是一个 Angular 功能拦截器,旨在管理应用程序使用期间可能出现的会话超时。 导出 const sessionExpiredInterceptor: HttpInterceptorFn = (req, next) => { c...
与应用于BehaviorSubject 相比,过滤器运算符应用于从运算符创建的 Observable 时的行为是否有所不同?
我用两种不同的方法定义了变量 person$ 和 source$: 方法 1:使用 BehaviourSubject 定义 person$: 接口 IPerson { 名称:字符串; 年龄:数字; } 常量人...
过滤运算符如何在由 from 运算符定义并由 BehaviourSubject 定义的变量中工作?
我用两种不同的方法定义了变量 person$ 和 source$: 方法 1:使用 BehaviourSubject 定义 person$: 接口 IPerson { 名称:字符串; 年龄:数字; } 常量人...
为什么过滤器操作符在 from 操作符中工作而不能与 BehaviourSubject 一起工作?
我用两种不同的方法定义了变量 person$ 和 source$: 方法 1:使用 BehaviourSubject 定义 person$: 接口 IPerson { 名称:字符串; 年龄:数字; } 常量人...
如何在Rxjs中对SubjectBehaviour变量使用过滤运算符?
我定义了一个Observable变量,如下所示: 接口 IPerson { 名称:字符串; 年龄:数字; } const person$ = new BehaviourSubject([ { 姓名:“阿米尔”,年龄:20 },...
“subject”数据库中的 Rxjs 关键字 - 未定义(读取“subject”)
我的http get 请求有问题。 API 响应有一个名为“subject”的属性,其中包含该项目的主题数组,当我尝试获取该数据时: 标识符.forEach(...
等待正在进行的 http 请求完成,然后再在 RXJS / Angular 中再次发送“相同”信息
以下场景。 (为社区进行简化和抽象)。 我有一个带有表单的 Angular 16 应用程序。 该表单包含许多输入字段 - 例如“firstName”、“surName”、“
在Angular下使用rxjs中的combineLatest()保留多个Observable<T>的类型?
当我的组件加载时,我需要使用两个服务。两者都需要完成才能继续。这些的完成顺序是随机的,不应连续组成。
我使用 Angular v17 遇到了一个奇怪的错误,我仍然是它的新手 首先我要从我的服务开始, 从 '@angular/common/http' 导入 { HttpClient }; 从 '@angula...