问题标签 [rxjs6]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
typescript - 更改订阅中的变量后,Angular 6 View 未更新
当订阅中的变量更改时,为什么视图没有更新?
我有这个代码:
例子.component.ts
example.component.html
但视图显示:foo-Hello。
为什么不显示:foo-Hello-bar?
如果我ChangeDetectorRef.detectChanges()
在订阅中调用它会显示正确的值,但是为什么我必须这样做呢?
我不应该从每个订阅中调用这个方法,或者根本不应该(角度应该处理这个)。有正确的方法吗?
我错过了从 Angular/rxjs 5 到 6 的更新吗?
现在我有 Angular 6.0.2 和 rxjs 6.0.0。相同的代码在 Angular 5.2 和 rxjs 5.5.10 中运行正常,无需调用detectChanges
.
angular - 在Angular 6中通过http get处理复杂对象
我不明白如何处理我订阅的对象。对象结构如下:
我通过以下服务提出上诉:
有一个接口模型:
我在组件中进行处理:
任务是按类型从对象中进行选择:“视频”。通过 AJAX + jQuery 没有问题,在 Angular 中我比较新。昨天铲了一堆视频课程,但没有过滤这种复杂对象的例子。
建造:
不起作用。结果是一个错误,提示“类型'VideoListModel []'上不存在属性'项目'”。直觉上,我知道问题很可能在界面中,但我无法理解如何修改界面以使过滤正常工作。如果有人遇到过滤复杂对象,请告诉我如何解决这个问题。
rxjs - 如何只使用 rxjs-compat 的一部分,或者编写一个自定义的 rxjs-compat?
我们已经更新了我们的项目以使用 Angular 和 Rxjs 6 并且一切正常。
我们还更新了代码以使用管道运算符,因此我们希望删除rxjs-compat
.
唯一的问题是我们的依赖项之一仍然使用 Observable 和 Subject 的旧导入语法。
有什么方法可以为这两个类提供我们自己的最小 rxjs-compat 吗?
该库没有对 Observable 和 Subject 做任何花哨的事情,也没有使用任何运算符,因此导入完整的 rxjs-compat 包似乎有点过头了。
angular - 无法让 Observable 输出到组件
几周以来,我一直在开发 Ngrx 应用程序,试图让这个可观察的应用程序输出到组件。最初,我认为我的ngrx 实体和reducer 有问题,所以我现在尝试将这一特定调用从ngrx 框架中取出并直接调用到输出。它仍然行不通。顺序如下:
从app/tasks/containers/selected-task-page.ts 调用并订阅输出然后传递到
一个显示组件app/tasks/components/pomo-tracker.ts
无论我尝试什么,它都不会绑定到组件和输出。我尝试添加 json 管道。我尝试关闭异步管道。我试图以不同的方式订阅 observable。我已经尝试过管道和映射到它。我完全不知所措。我对 rxjs 比较陌生。如您在此处看到的,observable 将值输出到控制台。
我不断遇到的错误之一是错误:找不到类型为“object”的不同支持对象“[object Object]”。NgFor 仅支持绑定到 Iterables,例如 Arrays。
我确信这与返回的 json 对象有关,但为什么这个 observable 不输出,而其他所有对象都输出。这就是为什么我尝试将 json 管道添加到输出但也不起作用的原因。
如果这里有人愿意帮助克服我花了几天时间克服的最后一道障碍,我将不胜感激。我的代码在 Stackblitz 上
要重现错误:
- 使用测试/测试登录
- 来自 Sidenav:查找任务
- 搜索 Python
- 将任务添加到集合。
- 点击播放按钮。5秒后会超时
- 输入备注并提交
- 刷新页面:在控制台查看错误。
先感谢您。
angular - 升级 rxjs 6:this._subscribe 不是 PromiseObservable.Observable.subscribe 的函数
升级后:Angular "5.2.0" -> "6.0.2" and rxjs": "^5.2.0", -> "rxjs": "^6.0" and "rxjs-compat": "^6.2.0" ,
我在浏览器上发现了这个错误:
然后我安装了:npm i -g rxjs-tslint 并运行rxjs-5-to-6-migrate -p path-to-tsconfig.ts 所有路径都已更新,但浏览器上仍然出现相同的错误。
rxjs - Angular 6 单元测试 rxjs 6 操作员点击单元测试拦截器
由于我将代码更新到新的 Rxjs 6,我不得不像这样更改拦截器代码:
auth.interceptor.ts:
而且我无法测试 rxjs 运算符“tap”和“catchError”。
实际上我只能测试是否调用了管道:
关于如何监视 rxjs 操作员的任何帮助
angular6 - 获取 TypeError: .finalize 不是 Rxjs6 中的函数
在以下函数中,我收到运行时错误TypeError: this.authService.authServiceSigninUser(...).map(...).catch(...).finalize is not a function
。
问题 1) 为什么 Typescript 在编译时没有捕捉到这个错误?我怎么能在编译时捕捉到这个错误。
问题 2) 我该如何解决这个错误?我尝试使用两者finally
,finalize
但两者都不起作用。
rxjs - 使用 rxjs 实现可拖动组件
我将可拖动组件的实现从 rxjs5 移动到 6。在测试时,我注意到函数 onDragEnd 偶尔不会被调用。这可能是什么原因?这是代码:
编辑:只是为了澄清我的期望,mousedown 事件应该映射到可观察的(假设我正确理解了排气映射)不应该允许外部可观察再次发射,直到内部可观察完成。我无法理解的是为什么在 20-30 次中没有触发 onDragEnd ,可以从文档中观察到,所以我的直觉告诉我在这种情况下鼠标向上是不可避免的,我错了吗?如果您有一些想法,这个实现可能有什么问题,请告诉我,谢谢!