Как говорится в сообщении об ошибке, проблема в том, что number
не имеет поля id
, как у вашего Post-объекта.И именно поэтому машинопись не принимает эту подпись метода как действительную.Объекты должны иметь одинаковый набор обязательных полей.
Вы можете попытаться создать объект-оболочку, который содержит все поля, которые содержит ваш Post-Object, и добавить number
в качестве дополнительного поля.Но я бы избежал этих усилий и скорее попробовал бы это двумя разными методами, разделяющими основной метод:
Как-то так:
Ваш файл TS
removePost(post: Post) {
if (confirm('Are you Sure?')) {
this.postService.removePostById(post.id).subscribe(() => {
this.posts.forEach((cur, index) => {
if (post.id === cur.id ) {
this.posts.splice(index, 1);
}
});
});
}
}
Ваш сервис
public removePostById(id: number): Observable<Post> {
return this.removePost(id);
}
public removePostByPostObject(post: Post): Observable<Post> {
return this.removePost(post.id);
}
private removePost(id: number): Observable<Post> {
const url = `${this.postsUrl}/${id}`;
return this.http.delete<Post>(url, httpOptions);
}