如何在循环中发送http获取方法Typescript。

我想用循环的方式按Id获取10个问题。但是我得到了错误。(TS) Type 'Subscription' is missing the following properties from type 'Question': QuestionId, Content, TestId, Test

我的问题类

import { Test } from './test';

export class Question {
    QuestionId: number;
    Content: string;
    TestId: number;
    Test: Test;
}

我在data.service中的get方法

    getQuestionById(id: number) {
        return this.http.get(this.questionUrl + `/${id}`);
    }

我的组件

    questions: Question[];
    question: Question;

    getQuestions() {
        for (let i = 1; i < 11; i++) {
            this.questions[i] =
                this.dataService.getQuestionById(i)
                    .subscribe((data1: Question) => {
                        this.question = data1;
                    });
            //this.questions.push(this.dataService.getQuestionById(1)
            //    .subscribe((data1: Question) => {
            //        this.question = data1;
            //    }););
        }
    }

我应该如何改变我的 getQuestions() 方法使其工作?

解决方案:

你需要初始化 this.questions 之前 for 语句。

this.questions = []

我相信你的for语句也需要调整。

for (let i = 0; i < 11; i++) {
    this.dataService.getQuestionById(i)
        .subscribe((data1: Question) => {
            this.questions.push(data1)
        });
}

看来,你不需要 this.question 实例。

Angular使用的是RxJs(它有异步调用的订阅机制)。你需要在 .subscribe 功能

给TA打赏
共{{data.count}}人
人已打赏
解决方案

在JTextArea中插入字(文本),从存储的现有文本中,同时输入

2022-4-22 18:08:56

解决方案

滚动数组的最小值,所以第一个值是窗口的最小值,而不是NaN。

2022-4-22 19:09:54

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索