JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – Angular2’this’未定义大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个代码如下:
export class CRListComponent extends ListComponent<CR> implements OnInit {

    constructor(
        private router: Router,private crservice: CRservicE) {
        super();
    }

    ngOnInit():any {
        this.getCount(new Object(),this.crservice.getCount);
    }

ListComponent代码是这样的

@Component({})
export abstract class ListComponent<T extends Listable> {

    protected getCount(event: any,countFunction: Function){
        let filters = this.parseFilters(event.filters);
        countFunction(filters)
            .subscribe(
                count => {
                    this.@R_535_10586@lItems = count;
                },error => console.log(error)
            );
    }

CRservice的相应服务代码片段是这样的

getCount(filters) {
    var queryParams = JSON.Stringify(
        {
            c : 'true',q : filters
        }
    );

    return this.createQuery(queryParams)
        .map(res => res.json())
        .catch(this.handleError);
}

现在当我的ngOnInit()运行时,我收到一个错误:

所以基本上,返回this.createQuery(queryParams)语句中的this将为null.有人知道这有可能吗?

解决方法

问题出在这里:
gOnInit():any {
    this.getCount(new Object(),this.crservice.getCount); // <----
}

由于您引用了对象外部的函数.你可以在它上面使用bind方法:

this.getCount(new Object(),this.crservice.getCount.bind(this.crservicE));

或将其包装成箭头功能:

this.getCount(new Object(),(filters) => {
  return this.crservice.getCount(filters));
});

第二种方法是首选方法,因为它允许保留类型.有关详细信息,请参阅此页面:

> https://basarat.gitbooks.io/typescript/content/docs/tips/bind.html

大佬总结

以上是大佬教程为你收集整理的javascript – Angular2’this’未定义全部内容,希望文章能够帮你解决javascript – Angular2’this’未定义所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。