【发布时间】:2020-09-18 12:31:24
【问题描述】:
我已经开始重构我的代码以使用 Angular Observables,并且我将 Observable 'of' 用于 quizzes$ 数组,但我一直坚持让 indexOfQuizId 工作,特别是使用 findIndex。我在控制台中得到 this.indexOfQuizId 的未定义值,不确定我做错了什么...请您在下面看到我的代码(在 getIndexOfQuizId() 中)并帮助它工作。谢谢!
在 quiz.ts 中:
export const getQuizzes$: Observable<Quiz[]> = of([quiz data inside array]);
在 quiz.service.ts 中:
export class QuizService {
quizzes$: Observable<Quiz[]>;
...
constructor(...) {
this.quizzes$ = getQuizzes$;
...
}
getQuizzes(): Observable<Quiz[]> {
return this.quizzes$;
}
getIndexOfQuizId() {
const index = this.getQuizzes().pipe(map(quizzes => {
this.indexOfQuizId = quizzes.findIndex((elem) => elem.quizId === this.quizId);
})).subscribe(x => {
console.log(x);
console.log('IOQID: ', this.indexOfQuizId);
});
}
在 quiz.component.html 中,我使用 this.indexOfQuizId 来访问 quizzes$ 数组对象,如下所示:
this.totalQuestions = this.quizzes$[this.quizService.indexOfQuizId].questions.length;
【问题讨论】:
-
在回调中使用箭头函数将
this关键字引用到类成员变量。试试:quizzes.findIndex((elem, i, obs) => elem.quizId === this.quizId). -
谢谢,我编辑了上面的代码以使用箭头函数。
-
this.quizId 的值未定义。在构造函数中我有 this.quizId = this.activatedRoute.snapshot.params['quizId'];我的路线看起来像: { path: 'question/:quizId/:questionIndex', component: QuizComponent },
标签: javascript angular rxjs observable