我有一个Angular 2应用中的服务events.service.ts
:
const EVENTS = {
1512205360: {
event: 'foo'
},
1511208360: {
event: 'bar'
}
}
@Injectable()
export class EventsService {
getEvents() {
return EVENTS;
}
deleteEvent(timestamp) {
delete EVENTS[timestamp];
}
}
我有一个home
组件,在其ngOnInit
钩子中调用此服务的getEvents
方法:
getEvents(): void {
this.events = this.eventsService.getEvents();
this.eventKeys = Object.keys(this.events);
}
ngOnInit(): void {
this.getEvents();
}
home
组件的模板简单地循环遍历事件并将它们打印出来,每个事件旁边都有一个delete
图标:
<event *ngFor="let eventKey of eventKeys" [timestamp]="eventKey" [title]="events[eventKey].event"></event>
这是“事件”组件:
event
@Component({
selector: 'event',
templateUrl: './event.component.html',
providers: [EventsService]
})
export class EventComponent {
@Input() timestamp: string;
@Input() title: string;
constructor(private eventsService: EventsService) { }
deleteEvent(timestamp) {
this.eventsService.deleteEvent(timestamp);
}
}
点击“删除”图标会调用“events”服务中的“deleteEvent”方法。我的问题是,当我点击“删除”图标时,虽然我可以看到事件已被删除(通过“console.logging”“EVENTS”对象),但“home”组件没有更新并显示以下错误:
“无法读取未定义的属性'event'”。