Как отправить http get методы в l oop Typescript - PullRequest
2 голосов
/ 22 апреля 2020

Я хочу получить 10 вопросов по Id, используя l oop. Но я получаю сообщение об ошибке: (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;
}

Мой метод get в data.service

    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() метод, чтобы он работал?

1 Ответ

4 голосов
/ 22 апреля 2020

Вам нужно инициализировать 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 использует Rx Js (который имеет механизм подписки для асинхронных вызовов c). Вам нужно pu sh данные внутри .subscribe функция

...