我正在使用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');
}
答案 0 :(得分:1)
访问全局this
的一种方法是使用bind
,如下所示:
coreApi.callApi(request, this.afterCallApi.bind(this, status, responceObject));
现在这段js代码coreApi.callApi(request, this.afterCallApi);
如你所知会调用this.afterCallApi
但请注意你正在使用没有paranthesis()的函数,这意味着this.afterCallApi
将被调用为callApi
的内部函数,callApi
&#39}内部this
绑定到afterCallApi
。
如果您想对其进行测试,请使用原始代码在console.log(this);
内afterCallApi
进行测试。您会看到this
是一个对象,而不是全局this
。
为了提供"访问"至afterCallApi
我们只需bind
引用全球this
的{{1}}。
另请查看这篇精彩帖子以获取更多信息:How to access the correct `this` inside a callback?
答案 1 :(得分:0)
如果您使用箭头格式定义函数,它将为您保留this
的范围。
示例:
var afterCallApi = (status, response) => { this.postCreateInstrument(accountNumber); }