Angular 11.2.6 or Typescript TS2345 error



我正在编写一个Angular教程,该教程提供了一些代码,但我收到了一个无法解决的错误。在我的代码中,只要有dish

getDish我试着回到教程中,并将所有指令与我推送到Github的每个版本进行了匹配。我是Angular的新手,所以教程可能使用了不同的版本?

错误为

Error: src/app/dishdetail/dishdetail.component.ts:23:42 - error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
23     this.dish = this.dishservice.getDish(id);  
~~

餐具细节组件.ts

import { Component, OnInit } from '@angular/core';
import { Dish } from '../shared/dish';
import { DishService } from '../services/dish.service';
import { Params, ActivatedRoute } from '@angular/router';
import { Location } from '@angular/common';
@Component({
selector: 'app-dishdetail',
templateUrl: './dishdetail.component.html',
styleUrls: ['./dishdetail.component.scss']
})
export class DishdetailComponent implements OnInit {
dish: Dish;
constructor(private dishservice: DishService,
private route: ActivatedRoute,
private location: Location) { }
ngOnInit() {
const id = +this.route.snapshot.params['id'];
this.dish = this.dishservice.getDish(id);
}
goBack(): void {
this.location.back();
}
}

餐具服务.ts

import { Injectable } from '@angular/core';
import { Dish } from '../shared/dish';
import { DISHES } from '../shared/dishes';
@Injectable({
providedIn: 'root'
})
export class DishService {
constructor() { }
getDishes(): Dish[] {
return DISHES;
}
getDish(id: string): Dish {
return DISHES.filter((dish) => (dish.id === id))[0];
}
getFeaturedDish(): Dish {
return DISHES.filter((dish) => dish.featured)[0];
}
}

menu.component.ts

import { Component, OnInit } from '@angular/core';
import { Dish } from '../shared/dish';
import { DISHES } from '../shared/dishes';
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[] = DISHES;
selectedDish: Dish;
constructor(private dishService: DishService) { }
ngOnInit() {
this.dishes = this.dishService.getDishes();
}
onSelect(dish: Dish) {
this.selectedDish = dish;
}
}

如果你需要其他文件,我可以提供。

从中删除+

const id = +this.route.snapshot.params['id'];

获取:

const id = this.route.snapshot.params['id'];

最新更新