为什么在角度中多次调用函数?

时间:2018-05-07 02:48:38

标签: javascript angular angularjs-directive

我制作了一个简单的演示In []: sorted({t for x in it.product(*s) for t in it.combinations(x, r=2)}) Out[]: [('a0', 'b0'), ('a0', 'b1'), ('a0', 'c0'), ('a0', 'c1'), ('a0', 'c2'), ('a1', 'b0'), ('a1', 'b1'), ('a1', 'c0'), ('a1', 'c1'), ('a1', 'c2'), ('b0', 'c0'), ('b0', 'c1'), ('b0', 'c2'), ('b1', 'c0'), ('b1', 'c1'), ('b1', 'c2')] 屏幕。我正面临一个user login函数多次调用的问题(get property)。

重现

的步骤
  1. 输入4 times示例10 digit number or email

  2. 点击test@gmail.com显示continue button屏幕。

  3. 点击password,然后查看控制台记录它的电话change email or mobile no
  4. 这是我的代码

    enter image description here

    我的实现是错误的吗?

    这是我的代码 https://stackblitz.com/edit/angular-p5knn6?file=src%2Fapp%2Flogin-component%2Flogin-component.component.html

    four (4) times

2 个答案:

答案 0 :(得分:1)

这是预期的,因为您使用 ngModel 和set,只要有更改输入值,就会有一个console.log条目。

每当某些事情发生变化时,必须评估html上绑定的值"在应用程序中,如果绑定项的值已更改,它将反映到html

相反,你可以使用ngBlur来获得焦点时的值。

答案 1 :(得分:0)

而不是使用getter和setter绑定它。你怎么样尝试绑定属性本身,如:

<input type="text" name="email"
       autocomplete="off"
       placeholder="Enter the Email or Number"
       [(ngModel)]="userInfo.username"
       required
       [disabled]="showPasswordField"
       pattern="^(\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+)$|^(\d{10})$">