在点击

时间:2018-01-31 18:37:41

标签: javascript angular

(click)="PageNumberChanged(pageNumber-1)"这种方式非常正常,但(click)="PageNumberChanged(pageNumber+1)"将字符串而不是数字添加为值如果pageNumber为10则结果应为11,但它会返回101
我尝试了什么: -

  1. (click)="PageNumberChanged('{{pageNumber+1}}')"
  2. (click)="PageNumberChanged(eval(pageNumber+1))"
  3. (click)="PageNumberChanged('pageNumber+1')"

    @Input()pageNumber:number;

  4. 从其他组件获取pageNumber并确保将数字作为值发送。

    我知道我可以创建一个带有两个参数的函数并且可以完成工作,但问题是我想要理解错误,以便我可以进一步改进角度,
    任何帮助都会很棒,谢谢!

3 个答案:

答案 0 :(得分:0)

执行控制器功能中的逻辑,

$scope.PageNumberChanged = function(pageNum){
   var newPageNum = pageNum + 1;
}

或者您可以直接将其作为

传递
 <button ng-click="PageNumberChanged(pageNum +1 )"> Change </button>

注意

此外,你应该用 (click) 替换 ng-click ,没有(点击)angularjs,它只有角度

修改

由于OP的问题在于Angular5,它应该如下工作,

(click)="PageNumberChanged(pageNumber+1)"

您遇到问题的原因是您的变量是一个String,当您在其上添加+时,它将进行连接

<强> DEMO WITH ANGULAR5

答案 1 :(得分:0)

如果你的pageNum变量是一个字符串,那么你所做的一切都是&#34; +&#34;在其中,将转换为字符串。您可以通过在求和之前将其转换来确定它是一个数字,如下所示:Number(pageNum)+ 1

&#13;
&#13;
console.log(typeof "1");
console.log(typeof Number("1"))
&#13;
&#13;
&#13;

答案 2 :(得分:0)

(click)="PageNumberChanged(pageNumber+1)"

 (click)="PageNumberChanged(pageNumber+'+1')"
component.ts中的

eval是我能让它工作的唯一方法。
仍然无法在我的代码中找到真正的问题。