angular - 类型 'void' 不能分配给类型 'Recipe[]'。这行代码中的错误 this: recipes = this.recipeService.getRecipes();
问题描述
组件代码:
import { Component, OnInit } from '@angular/core';
import { RecipeService } from '../recipe.service';
import { Recipe } from '../recipe.model';
@Component({
selector: 'app-recipe-list',
templateUrl: './recipe-list.component.html'
})
export class RecipeListComponent implements OnInit {
recipes: Recipe[];
constructor(private recipeService: RecipeService) {
}
ngOnInit() {
this.recipes = this.recipeService.getRecipes();
}
}
服务:
import { Recipe } from './recipe.model';
import { EventEmitter } from '@angular/core';
export class RecipeService {
recipeSelect = new EventEmitter();
private recipes: Recipe[] = [
new Recipe('A Test Recipe', 'This is simply a test', 'https://upload.wikimedia.org/wikipedia/commons/1/15/Recipe_logo.jpeg'),
new Recipe('Another Test Recipe', 'This is simply a test', 'https://upload.wikimedia.org/wikipedia/commons/1/15/Recipe_logo.jpeg')];
getRecipes() {
this.recipes.slice();
}
}
解决方案
getRecipes(): Recipe[] {
return [...this.recipes];
}
在您的示例中,您的服务函数在您期望收集返回(this.items)时不返回任何内容。
所以你必须使用关键字 return 来实现这一点。
此外,您正在使用切片返回本地集合的副本,这是一个好主意,但为了可读性和潜在性能,我更喜欢spread operator。
出于性能原因,请参阅此讨论:讨论
推荐阅读
- javascript - JS如何为对象添加价格并通过参数传递
- javascript - “名称(){}”和“函数名称(){}”有什么区别?
- php - 从变量字符串构建 if 语句
- python-3.x - Mess with response Values: php->system->bash->python3
- python - Size Limit On Download From Cloud Storage With App Engine
- r - 当我在同一个图中绘制函数和条形图时出现轴问题
- javascript - 将组件导入Vue,然后传递数据
- wordpress - Wordpress 版本 5.x (Gutenberg) 白色/空白屏幕:不要出队 wp-embed.min.js
- sql - DB2 SQL 查找提供特定颜色的供应商的 ID
- json - 如何针对用于表单验证的现有 XXXValidator 类验证 JSON 对象?