Javascript RxJS可观察到:';Skip不是一个函数';(或任何其他功能)

Javascript RxJS可观察到:';Skip不是一个函数';(或任何其他功能),javascript,angular,rxjs,Javascript,Angular,Rxjs,我在RxJS中遇到了一个奇怪的错误,得到的是“方法不是函数” 我确实导入了可观察库。 我已经得到了可观测的数组,没有出现错误 但是,当我跳过或采取,我得到这个错误 如果我读对了: 返回跳过由 可观测的源 由于我的observable包含一篇文章,它应该跳过observable右侧的x篇文章 这是密码 import { Component, OnInit } from '@angular/core'; import { Article} from '../../model/article'; im

我在RxJS中遇到了一个奇怪的错误,得到的是“方法不是函数”

我确实导入了可观察库。 我已经得到了可观测的数组,没有出现错误

但是,当我跳过或采取,我得到这个错误

如果我读对了:

返回跳过由 可观测的源

由于我的observable包含一篇文章,它应该跳过observable右侧的x篇文章

这是密码

import { Component, OnInit } from '@angular/core';
import { Article} from '../../model/article';
import {  ArticleService} from '../../model/article.service';
import { Router } from '@angular/router';

import { Observable } from 'rxjs/Rx';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/catch';

@Component({
  selector: 'app-liste-article',
  templateUrl: './liste-article.component.html',
  styleUrls: ['./liste-article.component.css']
})
export class ListeArticleComponent implements OnInit {

  articles: Observable<Article[]>;
  articlesPage: Observable<Article[]>;
  selectedArticle: Article;
  newArticle: Article;
  page = 1;
  itemPerPage = 2;
  totalItems = 120;

  constructor(private router: Router, private articleService: ArticleService) {

  }


  ngOnInit() {
    this.articles = this.articleService.getArticles();
    this.articlesPage = this.articles.skip((this.page - 1) * this.itemPerPage ).take(this.itemPerPage);

    //this.articlesPage = this.articles.slice(  (this.page - 1) * this.itemPerPage , (this.page) * this.itemPerPage );

  }
  onSelect(article: Article) {
    this.selectedArticle = article;
    this.router.navigate(['../articles', this.selectedArticle.id ]);
  }
  onPager(event: number): void {
    console.log('Page event is' , event);
    this.page = event;
    this.articlesPage = this.articles.skip((this.page - 1) * this.itemPerPage ).take(this.itemPerPage);

    console.log('tab' , this.articlesPage.count());
    //this.articleService.getArticles().then(articles => this.articles = articles);

  }

  getArticles(): void {
    this.articles = this.articleService.getArticles();
  }
  createArticle(article: Article): void {

    //this.articleService.createArticle(article)
      //.then(articles => {
       // this.articles.push(articles);
       // this.selectedArticle = null;
      //});
  }

  deleteArticle(article: Article): void {
    //this.articleService
     // .deleteArticle(article)
     // .then(() => {
      //  this.articles = this.articles.filter(b => b !== article);
      //  if (this.selectedArticle === article) { this.selectedArticle = null; }
      //});
  }
}
从'@angular/core'导入{Component,OnInit};
从“../../model/Article”导入{Article};
从“../../model/article.service”导入{ArticleService};
从'@angular/Router'导入{Router};
从'rxjs/Rx'导入{Observable};
导入'rxjs/add/operator/map';
导入“rxjs/add/operator/catch”;
@组成部分({
选择器:“应用程序列表文章”,
templateUrl:“./liste article.component.html”,
样式URL:['./liste article.component.css']
})
导出类ListArticleComponent实现OnInit{
文章:可以观察到,在我看来还行。看起来情况还行,就像我对函数的调用一样。两个arrya都是可以观察到的,所以我应该能够在一个函数上使用这些函数,并将结果放在另一个函数上,对吗


我看不出这里出了什么问题,可能是一个小细节,但我自己看不到(因为我从这里开始,我看到的细节更少)。

您将希望导入
跳过
采用与
映射
捕获
相同的方法

导入'rxjs/add/operator/skip';


导入'rxjs/add/operator/take';

您需要导入
跳过
获取
,方法与导入
映射
捕获
相同

导入'rxjs/add/operator/skip';


import'rxjs/add/operator/take';

我的直觉怀疑你应该做类似于
import'rxjs/add/operator/skip
的事情,但我可能错了。事实上,正如Dave所说。我假设它包含在可观察的导入中。你能分享这个.articleService.getArticles()吗代码?@GiliYaniv问题已经解决。take函数似乎并没有达到我想要的效果(它总是全力以赴).我的直觉怀疑你应该做一些类似于
import'rxjs/add/operator/skip
的事情,但我可能错了。的确。正如Dave所说。我假设它包含在可观察的导入中。你能分享这个.articleService.getArticles()代码吗?@GiliYaniv问题已经解决了。take函数似乎没有达到我想要的效果(总是需要全部)。但是那些函数不已经包含在Observable中了吗?这就是为什么我没有导入它们(map和catch是重新定义的,所以我让它们在这里)。您专门导入Observable类:
import{Observable}from'rxjs/Rx';
操作符在模块化方面是分开的(这让我们很恼火)。我明白了。不过,如果您必须在TS文件中导入所需的每个函数,这还是令人失望的。虽然这可能会很晚,但这关系到可读性和效率。例如,如果一个新开发人员要阅读您的代码,他们会想知道还有哪些函数可用,因为默认情况下,该函数会在那里。现在,随着pipeable运算符的更新这将在未来鼓励依赖rxjs的javascript应用程序的可读性和树震动。但是这些函数是否已经包含在Observable中了?这就是为什么我没有导入它们(map和catch是重新定义的,所以我在这里让它们出现)。您具体导入的是Observable类:
import{Observable}从'rxjs/Rx';
操作符在模块化方面是分开的(这让我们很恼火)。我明白了。不过,如果您必须在TS文件中导入所需的每个函数,这还是令人失望的。虽然这可能会很晚,但这关系到可读性和效率。例如,如果一个新开发人员要阅读您的代码,他们会想知道还有哪些函数可用,因为默认情况下,该函数会在那里。现在,随着pipeable运算符的更新这将在未来鼓励依赖rxjs的javascript应用程序的可读性和树震动。