Angular 4如何在删除子组件中的项目后更新父组件

时间:2017-05-17 15:41:22

标签: angular parent

我有父组件(主)中的项目列表,当用户单击其中一个项目时,在同一页面上的另一个组件(子/详细信息)中,它显示所选项目的详细信息。我在子组件中有一个删除按钮,用于从数据库中删除所选项。

我的问题是如何在删除子组件中的项目后更新父组件中的项目列表?

父组件:

export class ProjectListComponent implements OnInit {

  projects : Project[];
  selectedProject: Project;

  constructor(private _projectService: ProjectService) { }

  ngOnInit() {
    this.projects = [];
    this.fetchListOfProjects();
  }

  fetchListOfProjects(){
  this._projectService.getProject()
      .subscribe(projects => {
          this.projects = projects;
       })
   }

   onSelect(project: Project): void {
   this.selectedProject = project;
   }
}

子组件:

export class ProjectItemComponent implements OnInit {
 @Input() project: Project;
 constructor(private _projectService:ProjectService) { }

 ngOnInit() { }

 onDelete(id:any){
   if(confirm("Are you sure to delete the project?")) {
     this._projectService.deleteProject(id)
       .subscribe(result =>{        
        if(result.status == 204){
          console.log('removed');
        };
      }); 
   }       
 }
}

1 个答案:

答案 0 :(得分:2)

export class ProjectItemComponent implements OnInit {
 @Input() project: Project;
 constructor(private _projectService:ProjectService) { }

 @Output()
 someEvent = new EventEmitter();

 ngOnInit() { }

 onDelete(id:any){
   if(confirm("Are you sure to delete the project?")) {
     this._projectService.deleteProject(id)
       .subscribe(result =>{        
        if(result.status == 204){
          console.log('removed');
          this.someEvent.emit(null);
        };
      }); 
   }       
 }
<project-item (someEvent)="update()"

这样,当在子项中删除项目时,在父项上调用update()