无法将复选框值推送到数组

时间:2018-03-26 11:37:26

标签: javascript angular typescript

无法打印字段值。抛出"无法读取属性'推送'未定义" 错误

我的component.html

$file = Get-Content $_.FullName

if ((Get-Content $file | %{$_ -match $wordToFind}) -contains $true) {
    Add-Content log.txt $_.FullName
    ($file) | ForEach-Object { $_ -replace $wordToFind , $wordToReplace } | 
    Set-Content $_.FullName
}

我的component.ts

<div class="checkbox abc-checkbox abc-checkbox-success">
 <input class="inputChk" value="Serial_Number" id="ser_num" type="checkbox" checked="true">
 <label for="Serial_Number">Serial Number</label>
</div>
<div class="checkbox abc-checkbox abc-checkbox-success">
 <input class="inputChk" value="Stock_Number" id="stk_num" type="checkbox" checked="true">
 <label for="Stock_Number">Customer Stock Number</label>
</div>   
<button type="button" class="btn btn-primary" (click)="submitCheckedValues()">Submit</button>

2 个答案:

答案 0 :(得分:5)

存在此错误,因为this.fields未指向类的fields属性。 this代表匿名函数的范围。

在执行代码之前,您需要将引用保存在局部变量中:

submitCheckedValues(){
    let self = this; // Store the reference

    $('input:checkbox.inputChk').each(function ()  {
        var sThisVal = (this.checked ? $(this).val() : "");

        //printing sThisVal; 

        if(sThisVal){
            self.fields.push(sThisVal); // Use the reference of self here
        }
    });

    console.log(this.fields);
}

答案 1 :(得分:0)

如果您想尝试

,我想提供另一种解决方案
 $.each([1, 2, 3], (function(i, e) {
    console.log(this);
 }).bind(this));

您可以使用此功能绑定每个功能,然后您可以在每个功能中进行访问。