在 vuelidate/VueJS 中的当前范围之外访问验证 属性?

Accessing validation property outside the current scope in vuelidate/VueJS?

鉴于 Vue 2 中的以下组件使用 属性 验证中的 vuelidate

<template>
  // template stuff here...
</template>

<script>
import { validationMixin } from "vuelidate";
import { required, requiredIf } from "vuelidate/lib/validators";

export default {
  name: "ParentComponent",
  mixins: [validationMixin],
  data() {
    return {
      selected: false,
      user: {
        email: null,
        password: null,
      },
    };
  },
  validations: {
    selected: { required },
    user: {
      email: { required: requiredIf((vm) => vm.selected) },
      password: { required: requiredIf((vm) => vm.selected) },
    },
  },
};
</script>

属性 user.emailuser.password 是必需的,但前提是 selected 的验证成功通过。但是,这种方法似乎不起作用,可能是因为 selected 不是 user 验证对象的一部分。

有没有办法访问此验证属性?像这样...

 validations: {
    selected: { required },
    user: {
      email: { required: requiredIf((vm) => vm.$parentVm.selected) },
      password: { required: requiredIf((vm) => vm.$parentVm.selected) },
    },
  },

就是这样。演示 https://codesandbox.io/s/green-darkness-90fjsrequiredIf 解决这个问题的好办法