2017-08-28 114 views
0

我正在将信息从读取组件传递到编辑组件。我使用了共享服务(modeled off of this post),但在子组件中,员工信息为空。我想也许我无意中实例化服务两次,这就是为什么它是空的(?),但不知道我在做什么。以//未定义的线条应该有与父同一名员工信息(父母工作)无法在使用共享服务的Angular 2组件之间传递数据

家长

@Component({ 
    providers: [EmployeesService] 
}) 

export class EmployeeParentComponent { 
    private employee: Employee; 

    constructor(
     private employeesService: EmployeesService, 
     protected router: Router, 
     protected route: ActivatedRoute,) { } 

    ngOnInit(): void { 

    } 
//called from HTML template on Edit button click 
    toggleEditMode(employee: Employee) { 
     this.employeesService.employee = employee; 
     alert(this.employeesService.employee.firstName); //correct name 
     this.router.navigate('/editPage') 
    } 
} 

儿童

@Component({ 
    providers: [] 
}) 

export class EditEmployeeComponent { 
    constructor(
     private employeesService: EmployeesService 
     ) { 
     console.info(employeesService.employee); //undefined 
    } 

    ngOnInit(): void { 
     console.info(this.employeesService.employee); //undefined 
    } 
} 

服务

@Injectable() 
export class EmployeesService { 
    public employee: Employee; 
} 

回答

1

原因是特定组件提供的服务实例(您现在正在执行的操作)无法被其他组件访问。

如果您想将服务用作单例服务,则应在@NgModule的提供程序数组中提供该服务。

所以单纯从EmployeeParentComponent提供商阵列删除EmployeesService并将其添加到您的@NgModule的供应商阵列

相关问题