即使它在Postman中工作,我似乎无法将我的删除http调用工作。我已经尝试过调试,但这一切似乎都有效,但它仍然存在于我的数据库中。我真的很感激任何帮助,我真的在我的智慧结束。
这是我的HTML
<tbody *ngFor="let item of todolist">
<tr *ngIf="item.state == 'Complete'">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
<td>{{item.description}}</td>
<td>{{item.due_Date}}</td>
<td>
<form *ngIf="item" (ngSubmit)="deleteItem(item.id)">
<button type="submit" class="form-control">Delete Item</button>
</form>
</td>
</tr>
</tbody>
这是我的组件
@Component({
selector: 'completeitems',
templateUrl: './completeitems.component.html',
providers: [ToDoService]
})
export class CompleteItemComponent implements OnInit {
public ID: any;
public name: string;
public description: string;
public duedate: Date;
public tags: string;
public state: string;
public todolist: ToDoList[];
constructor(private activeRoute: ActivatedRoute, private todoService:
ToDoService, private router: Router) {
}
ngOnInit(): void {
this.fetchtodoitems();
}
fetchtodoitems(): void {
this.todoService.getToDoListItems().subscribe(results => this.todolist =
results);
}
public deleteItem(id: string) {
this.todoService.deleteItem(id).subscribe();
window.location.reload();
}
}
这是我的服务:
@Injectable()
export class ToDoService {
constructor(private http: Http) { }
getToDoListItems() {
return this.http.get('api/todolist')
.map(response => response.json());
}
getItem(id: any) {
return this.http.get('api/todolist' + id)
.map(item => item.json());
}
addToDoListItems(item: ToDoList) {
return this.http.post('api/todolist', item);
}
deleteItem(id: string) {
return this.http.delete('api/todolist' + id)
.map(res => res.json());
}
这是我的API控制器:
[HttpDelete("{id}")]
public IActionResult Delete(int id)
{
try
{
var item = this.dbContext.ToDoItems.FirstOrDefault(p => p.ID ==
id);
if (item == null)
{
return StatusCode(StatusCodes.Status404NotFound);
}
this.dbContext.Remove(item);
this.dbContext.SaveChanges();
return StatusCode(StatusCodes.Status205ResetContent);
}
catch (Exception e)
{
return StatusCode(StatusCodes.Status500InternalServerError,
e.Message);
}
}
答案 0 :(得分:0)
您在服务中将无效的网址传递给HTTP删除(您应该会在浏览器控制台中看到404)。
您需要在以下位置更改服务中的deleteItem
功能:
deleteItem(id: string) {
return this.http.delete('api/todolist' + id)
.map(res => res.json());
}
到
deleteItem(id: string) {
return this.http.delete('api/todolist/' + id)
.map(res => res.json());
}