当前位置: 首页 > 知识库问答 >
问题:

TypeScript:键入错误时使用get()-方法从HttpClient和订阅它

焦宏硕
2023-03-14

在我的Angular应用程序中,我建立了一个服务,它从MongoDB获取一些数据作为json数组。这是我的服务代码:

import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import 'rxjs/add/operator/map';


@Injectable()
export class IdeaServiceService {

  private _getURL = '/api/1.0.0/ideas';

  constructor(private _http: HttpClient) { }

  getIdeas() {
    return this._http.get(this._getURL).map((response: Response) => response.json());
  }

}

在另一个组件中,我尝试订阅此服务,并将获取的数据存储到Idea数组(我建立的相应类)中。这是相应的代码:

import { Component, OnInit } from '@angular/core';
import {Idea} from '../idea';
import {IdeaServiceService} from '../idea-service.service';

@Component({
  selector: 'app-ideas-overview',
  templateUrl: './ideas-overview.component.html',
  styleUrls: ['./ideas-overview.component.css'],
  providers: [IdeaServiceService]
})

export class IdeasOverviewComponent implements OnInit {

  ideas: Array<Idea>;

  constructor(private _ideaService: IdeaServiceService) { }

  ngOnInit() {
    this._ideaService.getIdeas().subscribe(resIdeaData => this.ideas = resIdeaData);
  }
}

现在出现以下类型错误:

错误:(19,59)TS2322:类型'Promise'不能分配给类型'idea[]'。在类型Promise中缺少属性包括。

非常感谢您的支持!

共有1个答案

饶明亮
2023-03-14

回答json()返回一个promise,而不是等待的普通数组。因此,除此之外,还必须使用then():

ngOnInit() {
    this._ideaService.getIdeas().subscribe(jsonPromise => {
       jsonPromise.then(resIdeaData => {
          this.ideas = resIdeaData;
       });
    });
}
 类似资料:
  • 我正在使用一个服务从url中检索数据,我正在另一个组件中使用该服务在前端中显示数据。。。 我的服务: 使用该服务的我的组件: 但我在控制台中得到以下错误: core.js:1633错误类型Error: req.url.toLowerCase不是HttpXsrfInterceptor.push中的函数../node _ modules/@ angular/common/Fe sm5/http . j

  • 我正在尝试创建订阅以接收有关 Office365 日历更改的通知。我已经使用过Outlook通知API,但微软涂鸦API有问题 我尝试使用Http Post创建订阅以https://graph.microsoft.com/beta/subscriptions标题和正文: > 标头:Content-Type:application/json;授权:持有者{access Toke} 正文: { "re

  • 例如: 我是否需要取消订阅此订阅?我问这是因为我不知道Angular是否处理它本身。另外,请求是一次性的,而不是连续的。我倾向于认为我不需要。你有什么想法? 根据下面的帖子:Angular/RXJS,我什么时候应该取消订阅'subscription' RxJS处理一次性订阅,但我在他们的文档中没有找到任何东西。

  • 我正在尝试在方法调用中使用它来从源中获取字符串 当在方法和类之外使用时,它可以很好地与我的url配合使用,并返回我正在寻找的正确字符串。但是,当我把它放在我的类和方法中时,它不再做任何事情。没有错误,只是什么都不返回。 作为参考,我使用的方法如下所示 我不知道为什么一旦我把它放入一个方法中,它就停止工作了。

  • 我尝试过,但不知道如何从API响应中读取数据。我能够获得200个状态代码,但我不知道如何获得实际数据。我正在尝试从WiThings API获取数据(http://developer.withings.com/oauth2/#tag/measure/paths/https:~1~1wbsapi.withings.net~1量?action=getmeas/get) 以下是我得到的回复: 状态代码:2

  • 我正在收集以下样本的样板: 反应16。x(来自CreateReact应用程序) 打字稿 带功能部件 通过上下文提供程序 我几乎已经解决了所有问题,但我似乎无法解决我遇到的这一个错误。我有一个像这样的MobX商店供应商 我得到的错误: 6:30警告@typescript eslint/explicit函数返回类型上缺少返回类型 6:33道具/道具类型中缺少错误“children” 如果你想把整个事情