2015-08-24 111 views
3

我有2個確保 - 驗證裝飾器的2個字段:密碼和retypePassword。我想在填充retypePassword字段時檢查這兩個字段的相等性。Aurelia驗證確保依賴性問題

問題是,當我在這兩個字段中輸入完全相同的密碼時,它說密碼不匹配。

@ensure(function(elem: ValidationGroup) { 
    elem 
     .isNotEmpty() 
     .isStrongPassword() 
}) password: string; 

@ensure(function(elem: ValidationGroup) { 
    elem 
     .isNotEmpty() 
     .isStrongPassword() 
     .isEqualTo(elem.subject.password, "password") 
}) retypePassword: string; 

我已經運行調試器,我看到了正在執行的行.isEqualTo(elem.subject.password,「密碼」)時elem.subject.password是不確定的。

我該如何解決這個問題?我如何測試這些密碼的相等性?爲什麼elem.subject.password未定義?

謝謝你的尊敬。

回答

3

official documentation有一個關於如何通過流利的API做到這一點的規範。

要做到這一點使用@ensure裝飾,你可以使用類似:

@ensure((elem: ValidationGroup) => { 
     elem 
      .isNotEmpty() 
      .isStrongPassword() 
      .isEqualTo((parent = elem) => { return parent.result.properties.password.latestValue }, "password") 
    }) retypePassword: string;