Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.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
Javascript 在Angular2中更改Select2的数据和processResults上下文_Javascript_Jquery_Angular_Typescript_Select2 - Fatal编程技术网

Javascript 在Angular2中更改Select2的数据和processResults上下文

Javascript 在Angular2中更改Select2的数据和processResults上下文,javascript,jquery,angular,typescript,select2,Javascript,Jquery,Angular,Typescript,Select2,我在Angular2应用程序中使用Select2,我需要在data和processResults中使用一些类属性。但是,这些上下文不是类上下文: export class DefaultFormInputSelectComponent { @Input() private validator; private select2Options() { return { ajax: { url: 'api',

我在Angular2应用程序中使用Select2,我需要在data和processResults中使用一些类属性。但是,这些上下文不是类上下文:

export class DefaultFormInputSelectComponent {

    @Input() private validator;

    private select2Options() {

        return {
            ajax: {
                url: 'api',
                dataType: 'json',
                delay: 250,
                data: this.ajaxData,
                processResults: this.ajaxProcessResults
            }
        }

    };

    ajaxData = function(params) {

        // this variable is not in DefaultFormInputSelectComponent context

        this.validator; // returns undefined, but it is not in DefaultFormInputSelectComponent context

    }

    ajaxProcessResults = function(data) {
        // same issue as ajaxData
    }

}

我试图在
ajax
属性中添加
context:this
,但没有任何更改。

如果您阅读了一些关于typescript的内容,您会发现在类中不应该使用
函数
关键字,并且像这样的绑定回调将导致
this
上下文被放置到函数中。您应该使用箭头函数表示法来创建函数或使用
bind
。或者您可以使用匿名箭头函数包装器:)您可以决定最喜欢什么:

export class DefaultFormInputSelectComponent {

    @Input() private validator;

    private select2Options(): any {
        return {
            ajax: {
                url: 'api',
                dataType: 'json',
                delay: 250,
                data: this.ajaxData,
                processResults: this.ajaxProcessResults.bind(this),
                anotherCallback: (data) => {
                    this.processAnother(data);
                }
            }
        }

    }

    private ajaxData: Function = (params: any): void => {
        console.log(this); //DefaultFormInputSelectComponent 
    };

    private ajaxProcessResults(data: any): void {
        console.log(this); //DefaultFormInputSelectComponent 
    }

    private processAnother(data: any): void {
        console.log(this); //DefaultFormInputSelectComponent 
    }
}

我不知道。实际上我只是在学习TS,角度,等等。。。非常感谢你!工作得很有魅力!这就是我们来这里的目的;)。很高兴我能帮忙