莫回無
2023-03-10 16:48:23
我已經開始重構我的代碼以與 Angular Observables 一起工作,并且我正在為 quizzes$ 數組使用 Observable 'of',但我堅持讓 indexOfQuizId 工作,特別是與 findIndex。我在控制臺中得到 this.indexOfQuizId 的未定義值,不確定我做錯了什么......請你看看我下面的代碼(在 getIndexOfQuizId() 中)并幫助讓它工作。謝謝你!在測驗中: 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;
1 回答

阿波羅的戰車
TA貢獻1862條經驗 獲得超6個贊
你有一個 undefined 對于這一行console.log('IOQID: ', this.indexOfQuizId);,這是非常正確的。
您可能知道,它subscribe是異步的,這意味著console.log('IOQID: ', this.indexOfQuizId);在您將任何值設置到 this.indexOfQuizId 之前調用下一行 ( ),因為map最終將調用它。
嘗試將 console.log 移動到subscribe這樣的位置:
getIndexOfQuizId() {
const index = this.getQuizzes().pipe(map(quizzes => {
this.indexOfQuizId = quizzes.findIndex(function(elem, i, obs) { return elem => elem.quizId === this.quizId; });
})).subscribe(x => {
console.log(x);
console.log('IOQID: ', this.indexOfQuizId);
});
}
添加回答
舉報
0/150
提交
取消