在 Angular 中丢失在 iCheck 回调中分配的变量值

Losing variable value assigned in iCheck callback in Angular

我是新手,所以请多关照。

我在同一个 component.ts

中得到了这两个函数

第一个:

addCost() {
    $(document).ready(function(){
                    (<any>$('input')).iCheck({
                        checkboxClass: 'icheckbox_square-blue',
                        radioClass: 'iradio_minimal-grey'
                    });
                    $('#not2bpaid').on('ifChecked', () => {
                        this.not2bpaid_tosend = "N";
                    });
}

'ifChecked' 回调中的这个变量赋值有效,我已经确定了。

然后我有另一个函数,它在 html 中的单击事件中调用,它使用变量 not2bpaid_tosend。

addCost() 在点击事件的函数之前被调用,但到那时 not2bpaid_tosend 已经失去了它的价值。

我也试过在从 html 触发时将 not2bpaid_tosend 作为参数传递给第二个函数。同样的结果。那时变量为空。 而且我不会在这两个函数之间的任何其他时间触及该变量。

不确定这里发生了什么或如何解决它。可能是我忽略了一些简单的事情,因为正如我所说,我是这个 angular 的新手。

如有任何帮助,我们将不胜感激。 谢谢

您必须在将参数传递给 jquery 的就绪函数时使用箭头函数,以保持组件 class 的上下文完整无缺。

addCost() {
  $(document).ready(() => {
    (<any>$('input')).iCheck({
      checkboxClass: 'icheckbox_square-blue',
      radioClass: 'iradio_minimal-grey'
    });
    $('#not2bpaid').on('ifChecked', () => {
      this.not2bpaid_tosend = "N";
    });
  });
}