(更改)angular2 中的事件挂钩

(change) event hook in angular2

我知道 angular2 中的(更改)event Binding,但我很惊讶为什么我的代码没有按预期工作?

我的代码在这里..

http://plnkr.co/edit/9pSWSeqBc5oaSAtsfwNY?p=preview

当更改事件被调用时,两个条件都没有按预期工作。

(change)="holiday= !holiday && employee= !employee"

第一次调用 change 事件时它工作正常,但第二次它只对第一个条件有效,即 holiday。在我的示例中,我期望的值是 true 或 false,但与预期不同。

肯定有误。有谁能正确解释一下(change)事件的生命周期吗?

你应该用 ; 而不是 && 运算符来分隔它们。

如果第一个表达式出错,它不会计算下一个表达式。

(change)="holiday= !holiday;employee= !employee"

How && operator works?

  1. Suppose a && b, if both are true then only it returns true(in short there shouldn't be any false value otherwise it will return false).
  2. When evaluating a && b code will first check a value is true then only the interpreter will goes b value to evaluate it. If a value it self is false then it don't evaluate(check) b's value, and a && b expression will return false.

之前 holiday= !holiday && employee= !employee。在初始加载时,holidayemployee 都具有 false 值。当您单击 checkbox 时,它计算 holiday= !holiday && employee= !employeeholidayemployee 值都变为 true

基本上在第一个 holiday= !holiday 得到评估时的幕后,holiday 变为 truefalse & holiday= !holiday 表达式 return 最新值(returns true),第二个表达式是否做同样的事情 & returns true.

现在 holiday = true & employee = true。当您再次单击该复选框时。它调用更改事件并再次尝试评估 holiday= !holiday && employee= !employee。 其中 holiday= !holiday return false,那么正如我上面提到的 && 运算符如何工作?。它不关心表达式的下一部分,和 returns false 值。

现在 holiday = false & employee = true。如果您再次单击复选框,则 holiday 变成 true 并继续评估表达式的其他部分,employeefalse 变成 true .