Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 角度2范围';结构和部件_Typescript_Angular_Angular2 Directives_Angular2 Services - Fatal编程技术网

Typescript 角度2范围';结构和部件

Typescript 角度2范围';结构和部件,typescript,angular,angular2-directives,angular2-services,Typescript,Angular,Angular2 Directives,Angular2 Services,全部, 这就是我所拥有的: user-list.component.ts export class UserListComponent { public userSerivce: UserService; public deleteUser(id) { this.userSerivce.delete(id); } } export class SomeReusableComponent { @Input() deleteFunc: F

全部,

这就是我所拥有的:

user-list.component.ts

export class UserListComponent {

    public userSerivce: UserService;

    public deleteUser(id) {
        this.userSerivce.delete(id);
    }
}
export class SomeReusableComponent {    
    @Input() deleteFunc: Function;    
}
user-list.component.html


一些可重用的.component.ts

export class UserListComponent {

    public userSerivce: UserService;

    public deleteUser(id) {
        this.userSerivce.delete(id);
    }
}
export class SomeReusableComponent {    
    @Input() deleteFunc: Function;    
}
some-reusables.component.html


这是我的问题:

当我单击按钮时,它会调用
UserListComponent
上的函数,但当我提到
this
时,它也提到了
SomeReusableComponent
,我理解为什么会发生这种情况,但我正在寻找解决方案?您可以在上面的示例中看到对
this.userSerivce.delete(id)的调用将失败,因为
SomeReusableComponent
上不存在
userService

我希望上面的例子有意义

谢谢


Steve

我认为更好的方法是使用事件绑定

导出类SomeReusableComponent{
@Output itemDeleted:EventEmitter=new EventEmitter();
handleDelete(实体ID){
itemDeleted.emit(entityId);
}
}


完全同意@Günter

关于您的
问题,这是因为您在引用函数(甚至从对象)时丢失了
。要防止出现这种情况,可以使用函数的
bind
方法:

delete.bind(this)

我不知道发生了什么事,所以谢谢你!这是一种治疗,你认为这是目前最好的方式,这是未来的证明吗?或者你认为angular2将来会自己处理这种情况吗?我想我在回答中所展示的方式就是angular2的方式。如果你仍然想传递函数,请使用Thierry在其回答中解释的内容,但如果没有充分的理由,我会劝阻你。谢谢@Thierry提供的信息。