updatePost(title: string, url: string, id:number): void {
const update: Picture[] = this.collection.map((p)=>{
p.id = id;
p.title = title;
p.url = url
});
}
Если цель - обновление элементов массива, надо использовать forEach вместо map, и нет необходимости в получении результата. И зачем вы обновляете весь массив, если по вашим же словам обновить нужно всего один элемент? Или вы не понимаете, что происходит в этом коде?
Надо по id найти нужный элемент и обновить только его:
Object.assign(this.collection.find(n => n.id === id), { title, url });
UPD. Ещё странный момент. Если верить вашему коду, то свойство edData является массивом:
editPost(picId: Picture[]): void {
this.edData = picId;
}
А если смотреть на шаблон - предполагается, что это объект:
<button (click)="updatePost(titleEd.value, urlEd.value, edData.id);
Откуда у edData возьмётся id, если это массив?