首页 > 解决方案 > 类型 '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();
    }
}

标签: angulartypescript

解决方案


getRecipes(): Recipe[] {
    return [...this.recipes];
}

在您的示例中,您的服务函数在您期望收集返回(this.items)时不返回任何内容。

所以你必须使用关键字 return 来实现这一点。

此外,您正在使用切片返回本地集合的副本,这是一个好主意,但为了可读性和潜在性能,我更喜欢spread operator

出于性能原因,请参阅此讨论:讨论


推荐阅读