Javascript RxJS可观察到:';Skip不是一个函数';(或任何其他功能)
我在RxJS中遇到了一个奇怪的错误,得到的是“方法不是函数” 我确实导入了可观察库。 我已经得到了可观测的数组,没有出现错误 但是,当我跳过或采取,我得到这个错误 如果我读对了: 返回跳过由 可观测的源 由于我的observable包含一篇文章,它应该跳过observable右侧的x篇文章 这是密码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
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应用程序的可读性和树震动。