angular - 角度错误 TS2322:输入“承诺”
问题描述
我在 Coursera 学习 Angular 5,但对 Promise 主题有疑问。我只是重复了一个讲师代码并出现错误 TS2322。这是我的服务文件。
import { Injectable } from '@angular/core';
import { Dish } from '../shared/dish'; //it's a class
import { DISHES } from '../shared/dishes'; //it's const
@Injectable()
export class DishService {
getDishes(): Promise<Dish[]> {
return Promise.resolve(DISHES);
}
getDish(id: number): Promise<Dish> {
return Promise.resolve(DISHES.filter((dish) => (dish.id === id))[0]);
}
getFeaturedDish(): Promise<Dish> {
return Promise.resolve(DISHES.filter((dish) => dish.featured)[0]);
}
以及使用该服务的组件:
import { Component, OnInit } from '@angular/core';
import { Dish } from '../shared/dish';
import { DishService } from '../services/dish.service';
@Component({
selector: 'app-menu',
templateUrl: './menu.component.html',
styleUrls: ['./menu.component.scss']
})
export class MenuComponent implements OnInit {
dishes: Dish[];
selectedDish: Dish;
onSelect(dish: Dish) {
this.selectedDish = dish;
}
constructor(private dishService: DishService) { }
ngOnInit() {
this.dishes = this.dishService.getDishes()
.then(dishes => this.dishes = dishes);
}
}
我得到错误:
src/app/dishdetail/dishdetail.component.ts(26,4) 中的错误:错误 TS2322:类型“Promise”不可分配给类型“Dish”。“Promise”类型中缺少属性“id”。src/app/home/home.component.ts(28,5):错误 TS2322:“Promise”类型不可分配给“Dish”类型。src/app/menu/menu.component.ts(23,4):错误 TS2322:类型“Promise”不可分配给类型“Dish[]”。“Promise”类型中缺少属性“includes”。
我认为我的服务有问题,但我找不到对我有帮助的主题。请解释一下有什么问题。
解决方案
您正在尝试设置this.dishes
一个承诺,而它是一个Dish
. 删除代码中的分配并this.dishes
仅在收到数据后进行设置:
this.dishService.getDishes()
.then(dishes => this.dishes = dishes);
推荐阅读
- amazon-web-services - AWS Amplify: AmplifyException 'You are not authorized to make this call.'
- python - NumPy fast iteration trough image
- python-3.x - Visual studio code Python execution
- r - R studio:分解/旋转数据框以计算每个组在不同时间段的每个变量的平均值
- perl - 如何做哈希参考切片的总和?
- python - 模型中的 Django 文件上传
- python - 此页面无法正常工作 127.0.0.1 未发送任何数据 Flask 中的错误
- node.js - Docker 容器在您的平台上为 Chrome 浏览器提供无二进制文件
- java - Android:我删除了一个包,然后我得到了 ClassNotFoundException:在路径上找不到类
- nestjs - nestjs extends jwt guard