首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >角6:可观测的HTTPClient

角6:可观测的HTTPClient
EN

Stack Overflow用户
提问于 2018-07-21 07:27:52
回答 2查看 757关注 0票数 1

我有一个现有的角2项目,我把它移植到了角6,现在我的HTTP可观测性不再运行了。据我所知,这是关于新观察到的不同操作的。

我的服务还可以观察到。这是我在组件中订阅并设置interval和startindex的。

我怎样才能在第六角做到这一点?

代码语言:javascript
复制
// SERVICE 
@Injectable ()
export class ViewService
{
  constructor (private http : HttpClient)
  {      }

  foo () : Observable <any>
  {
    return this.http.get ("http://blabla",
      {responseType: "json"});
  }
}



// COMPONENT
export class ViewComponent
{
  constructor (private vs : ViewService)
  {      }

  ngOnInit ()
  {
    this.vs.foo ().interval (1000).startWith (0).subscribe (
      (resp) =>
      {
      });
  }
}

误差

错误:错误TS2339:属性‘间隔’在类型‘可观察’上不存在

使用rxjs 6.0.0

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-21 08:12:08

首先,您必须从interval中导入rxjs

代码语言:javascript
复制
import { interval } from 'rxjs';

导入startWith,还必须从rxjs/operators导入mergeMap

代码语言:javascript
复制
import { startWith, mergeMap } from 'rxjs/operators';

然后你可以像这样使用它们:

代码语言:javascript
复制
interval(1000).pipe(
  startWith(0),
  mergeMap(iRes => this.vs.foo())).subscribe(resp => {
    console.log(resp);
  });

希望这能帮到你!

票数 4
EN

Stack Overflow用户

发布于 2018-07-21 10:01:21

RxJS v6中有几处变化是Angular6采用的,您需要注意:

  1. 不同进口方式的观察表和操作符。因此,您需要以这种方式在组件控制器的顶部添加操作符: 从‘rxjs’导入{ interval };从‘rxjs/操作符’导入{ startWith、mergeMap };
  2. 使用pipe()作为一种方法来链接您的操作符,用旧的方法将它们链接起来是行不通的: //组件导出类ViewComponent {构造函数(私有vs : ViewService) {} ngOnInit () { const $= interval(1000).pipe( //这是主观察链startWith(0),mergeMap(res => this.vs.foo() // )//这将启动一个独立于主链.subscribe的观测器子链(res => console.log(‘订阅子链:’),obs$.subscribe(res => console.log(‘订阅主链:',res);}}

如果您仍然感到困惑,请看Ben Lesh的视频,并了解RxJS v6:https://www.youtube.com/watch?v=JCXZhe6KsxQ中发生了哪些变化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51453858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档