我正在尝试构建一个应用程序,首先要按用户获取我的帖子,然后单击某个帖子时,我想按ID获取此特定帖子。
最后我得到以下错误:
src / app / cars / car-detail / car-detail.component.ts(25,11)中的ERROR:错误 TS2322:类型为“ Observable <{_id:字符串; title:字符串内容: 串; imagePath:字符串;创建者:字符串; }>'不可分配给 输入“ Car []”。
类型'Observable <{_id:string;中缺少属性'includes' title:字符串内容:字符串; imagePath:字符串;创建者:字符串; }>'。
src / app / cars / car-detail / car-detail.component.ts(26,11):错误TS2322:类型“数字”不能分配给类型“字符串”。
import { Input, Component, OnInit } from '@angular/core';
import { Car } from '../car.model';
import { CarsService } from '../cars.service';
import { ActivatedRoute, Params } from '@angular/router';
@Component({
selector: 'app-post-detail',
templateUrl: './post-detail.component.html',
styleUrls: ['./post-detail.component.css']
})
export class PostDetailComponent implements OnInit {
@Input() post: Post[] = [];
@Input() id: string;
constructor(
private postsService: PostsService,
private route: ActivatedRoute
) { }
ngOnInit() {
this.route.params
.subscribe(
(params: Params) => {
this.post = this.postsService.getPost(this.id);
this.id = +params['id'];
}
);
}
}
我该怎么办?
答案 0 :(得分:2)
@Input() id: string
的类型为string
,但是当您执行this.id = +params['id'];
-+
运算符试图将params['id']
解析为number
时,为什么?你会出错。
将@Input() id: string
的类型设置为number
。
this.post = this.postsService.getPost(this.id);
我认为getPost
返回一个可观察的。您需要订阅它,然后将调用返回的结果分配给post
属性。
this.postsService.getPost(this.id).subscribe(res => this.post = res);
答案 1 :(得分:1)
尝试this时遇到了类似的情况。
错误TS2322:类型“数字”不能分配给类型“字符串”
以下是我在实现节点rest api时遇到的错误。
error TS2322: Type 'string' is not assignable to type 'number | FindOperator<number>'.
27 const product = await repository.find({ id: req.params.id });
我只需要简单地将变量类型从id:number
更改为id: string
。
此函数中使用的关联变量在另一个文件中声明。该特定变量的声明类型(在我的示例中为“ id”)与产生错误的行的变量类型不兼容。
因此转到声明的位置,然后根据类型将变量类型设置为数字/字符串,然后它将与其余功能兼容。