我在Angular中遇到了一些代码,这些代码每隔几秒钟就会在单词之间轮换一次:
words: string[] = ['foo', 'bar', 'baz'];
word = null;
rotateWords() {
const source = Rx.Observable.interval(1000).take(this.words.length);
const sub = source.finally(this.rotateWords).subscribe(i => this.word = this.words[i]));
}
不幸的是,我在我的Rx(6.5.5)和Angular(10.0.9)版本中收到错误消息“未找到Rx ”。该代码似乎是用旧式的RxJ编写的。如何用新样式重写它?
如果你在rxjs中使用angular 4+
import { interval } from 'rxjs'
import { take, finalize} from 'rxjs/operators'
words: string[] = ['foo', 'bar', 'baz'];
word = null;
rotateWords() {
const source = interval(1000).pipe(take(this.words.length));
const sub = source.pipe(finalize(this.rotateWords.bind(this))).subscribe(i => {
this.word = this.words[i];
});
}
}
谢谢,我收到第二行的一些错误:
const sub...
各地error TS1135: Argument expression expected. 19 const sub = source.pipe(finally(this.rotateWords)).subscribe(i => this.word = this.words[i]));
我已更改
finally
为,finalize
因为它已重命名谢谢,我尝试了以上操作,但看起来似乎没有。当到达最后一个词时,我得到了错误
1 errors occurred during unsubscription: 1) TypeError: Cannot read property 'length' of undefined
抱歉是要说,它似乎没有“循环”
请立即检查,我已绑定
this