У меня проблема с кодом Angular, когда я пытаюсь сделать почтовый запрос . Основная проблема с удостоверением личности. Я инициализирую свой массив listItems и обновляю его, когда добавляю в него новый элемент списка. Однако я не могу добавить идентификатор.
Есть 2 проблемы:
Я не могу добавить идентификатор через массив listItems, потому что он не определен,
, несмотря на тот факт, что я ранее инициализировал его в OnInit
ID не появляется на странице, один раз, когда я обновляю sh. И когда я пытаюсь удалить элемент, он выдает ошибку, однако, когда я обновляю sh страницу, я думаю, Angular добавляет идентификатор самостоятельно, и это вроде работает
Вот код
list-main.component.ts
import { Component, OnInit } from '@angular/core';
import { ListItem } from '../../models/list-item.interface';
import { ListDashboardService } from '../../list-dashboard.service';
@Component({
selector: 'list-main',
styleUrls: ['list-main.component.scss'],
template: `
<div class="title">
<h1>Database To-do Angular</h1>
</div>
<div class="form">
<list-form
[blankListItem]="listItem"
(addNewListItem)="addItem($event)">
</list-form>
</div>
<!-- <div
*ngFor="let item of listItems">
{{ item.title | json }}
</div> -->
<div>
<list-item
*ngFor="let item of listItems"
[listItem]="item"
(delete)="deleteItem($event)">
</list-item>
</div>
`
})
export class ListMainComponent implements OnInit {
listItems: ListItem[];
listItem: ListItem;
constructor(private listDashboardService: ListDashboardService) {}
ngOnInit() {
this.listDashboardService
.getAllListItems()
.subscribe((data: ListItem[]) => this.listItems = data);
this.listItem = {
// id: this.listItems.length,
id: undefined,
title: '',
isChecked: true
}
}
addItem(listItem: ListItem) {
console.log(this.listItem);
this.listDashboardService
.addListItem(listItem)
.subscribe((data: ListItem) => {
this.listItems.push(listItem);
});
console.log(this.listItems);
}
deleteItem(listItem: ListItem) {
this.listDashboardService
.deleteListItem(listItem)
.subscribe((data: ListItem) => {
this.listItems = this.listItems.filter(
(el: ListItem) => el.id !== listItem.id
);
});
}
}
list-dashboard.service.ts
import { Http, Response } from "@angular/http";
import { Injectable } from "@angular/core";
import { Observable } from "rxjs/Observable";
import 'rxjs/add/operator/map';
import { ListItem } from "./models/list-item.interface";
const LIST_API: string = '/api/listItems';
@Injectable()
export class ListDashboardService {
constructor(private http: Http) {}
getAllListItems(): Observable<ListItem[]> {
return this.http
.get(LIST_API)
.map((response: Response) => response.json())
}
addListItem(listItem: ListItem): Observable<ListItem> {
return this.http
.post(LIST_API, listItem)
.map((response: Response) => response.json());
}
deleteListItem(listItem: ListItem): Observable<ListItem> {
return this.http
.delete(`${LIST_API}/${listItem.id}`)
.map((response: Response) => response.json());
}
}