angular - 类型“对象”不可分配给类型“NgIterable”| 空 | 不明确的'。在角 11
问题描述
第一次学习角度和打字稿,不明白为什么这是无效的!
http.service.ts
export class HttpService {
constructor(private http: HttpClient) { }
getBeer() {
return this.http.get('https://api.openbrewerydb.org/breweries')
}
}
该api返回一个对象
the component its being used in:
export class ListComponent implements OnInit {
brews: Object;
constructor(private _http: HttpService) { }
ngOnInit() {
this._http.getBeer().subscribe(data => {
this.brews = data
console.log(this.brews);
}
)
}
}
我在行中遇到错误
brews: Object;
其中说:
错误 TS2322:类型“对象”不可分配给类型“NgIterable | 空 | 不明确的'。“对象”类型可分配给极少数其他类型。您的意思是改用“任何”类型吗?
我试过了:
brews: any;
和
brews: Object[] = [];
但似乎没有任何效果。
有人可以解释我哪里出错了吗?
该api返回一个对象,那为什么我不能这样做
brews: Object;
模板用于:
<h1>Breweries</h1>
<ul *ngIf="brews">
<li *ngFor="let brew of brews">
<p class="name">{{ brew.name }}</p>
<p class="country">{{ brew.country }}</p>
<a class="site" href="{{ brew.website_url }}">site</a>
</li>
</ul>
解决方案
最好根据您的data
. 但是如果你坚持使用匿名类型,你可能需要使用any[]
类型来解决问题:
brews: any[];
您的服务将是这样的:
this._http.get('https://api.openbrewerydb.org/breweries').subscribe(data => {
this.brews = data as any[]
console.log(this.brews);
}
这是工作示例:StackBlitz
推荐阅读
- python - 如何通过 Azure DevOps 管道 CI/CD 执行测试套件(Selenium Python)?
- c++ - 用于生成目标代码的 LLVM 通行证导致分段错误
- c# - 从新类 (Xamarin) 更改 Xaml-Image.Source
- javascript - 画布游戏会在一段时间后变慢。是什么原因造成的?
- excel - Excel基本如何突出显示单元格A和B不相等的行?
- javascript - Google OAUTH 不在 MongoDB 中存储电子邮件?
- gradle - 我如何使用 gradle 调试 intelij tomcat
- f# - 获取 F# 中布尔数组中特定位置的索引值
- css - 如何将标题表与表响应(不是javascript)粘贴在一起?
- sql - 使用存在或不存在查找唯一的名称