我在使用RxJS时遇到了一个奇怪的错误,因为“方法”不是一个函数'。
我确实导入了Observable库。 我已经有了Observable数组,没有出现任何错误。
但是当我跳过或接受时,我会收到此错误。
如果我读得正确:
返回一个Observable,它跳过由...发出的第一个计数项 来源可观察。
由于我的observable包含Article,它应该跳过关于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; }
//});
}
}
我尝试直接使用.skip(1)
,但收到同样的错误。
我查看了官方文件RxJS Observable,对我来说看起来还不错。看来情况还可以,因为我对函数的调用。两个arryas都是Observable所以我应该能够在一个上使用这些功能,并将结果放在另一个中吗?
我不知道这里有什么问题,可能是一个小细节,但我自己也看不到(因为我从这开始,我看到的细节较少)。
答案 0 :(得分:4)
您希望以与skip
和take
相同的方式导入map
和catch
。
import 'rxjs/add/operator/skip';
import 'rxjs/add/operator/take';
答案 1 :(得分:0)
对于 rxjs@6.5.5,我必须进行以下更改:
导入跳过
import { skip } from "rxjs/operators";
改变
return this.udpstream.asObservable().skip(1);
到
return this.udpstream.asObservable().pipe(skip(1));