如何从Javascript回调方法调用Typescript方法-Angular2

如何从Javascript回调方法调用Typescript方法-Angular2,javascript,angular,typescript,Javascript,Angular,Typescript,我使用的是angular2,我的问题是我无法从javascript回调调用组件方法。这里是代码片段 declare var CORE_FACTORY:any; // CORE_FACTORY Defined in javascript file which I've included in index.html and it's gets loded perfectly. let coreApi = CORE_FACTORY.setupApiByDomain(Domain.QA);

我使用的是angular2,我的问题是我无法从javascript回调调用组件方法。这里是代码片段

 declare var CORE_FACTORY:any;

 // CORE_FACTORY Defined in javascript file which I've included in index.html and it's gets loded perfectly.

 let coreApi = CORE_FACTORY.setupApiByDomain(Domain.QA); 
 coreApi.addUserEventListener(apiName, ApiEvent.ON_ANY_EVENT,this._userCallBack);
 coreApi.callApi(request, this.afterCallApi);

 afterCallApi(status, responceObject) {
            this.postCreateInstrument(accountNumber); //Getting error right here.
 }

 public postCreateInstrument(accountNumber:string) {
         alert('test');
 }

访问全局
的一种方法是像这样使用
绑定

coreApi.callApi(request, this.afterCallApi.bind(this, status, responceObject));
现在这段js代码
coreApi.callApi(request,this.afterCallApi)将调用
this.afterCallApi
,但请注意,您使用的函数没有paradensis(),这意味着
this.afterCallApi
将作为
callApi
的内部函数调用,而
callApi
的内部
this
绑定到
afterCallApi

如果要测试它,请执行
console.log(this)内部
afterCallApi
与原始代码。您将看到
this
是一个对象,而不是全局
this

为了“访问”afterCallApi,我们只需绑定
this
,它是指全局
this


另外,请查看这篇文章以了解更多信息:

如果您使用箭头格式定义函数,它将为您保留此
的范围

例如:

var afterCallApi = (status, response) => { this.postCreateInstrument(accountNumber); }

最后都是JavaScript;TypeScript在浏览器解释之前编译(从技术上讲是透明文件)为JavaScript。