インライン校正
動的に生成されたフォームは一行ずつチェックする必要があるので、インラインチェックを使う方が理にかなっています。
メソッド1
el-form-itemはel-tableの下に入れ子にすることができますが、双方向のバインディングは、Vモデルのバインディングを介して、スロットを介してのみ取得することができ、ここに注意を払う必要があるのはpropsを追加する必要があるということです、ランダムに値を与えるトリガすることができ、追加しないとたまにトリガされなくなります。
<el-table-column prop="name" label="xxx align="center">
 <template slot-scope="scope">
 <el-form-item
 prop="x"
 :rules="[
 { validator: function(rule, value, callback) {
 const { name } = form.sentenceList[scope.$index]
 if (name) {
 return callback()
 }
 callback(throwError())
 }, message: ' xxx, trigger: 'blur' },
 ]"
 >
 <el-input v-model="scope.row.name" placeholder="xxx></el-input>
 </el-form-item>
 </template>
 
</el-table-column>
メソッド2
<div
 class="form-item-group"
 v-for="(item,index) in addDataForm.disActReviewTransfers"
 :key="index"
 >
 <el-form-item
 label="xxx"
 :prop="'disActReviewTransfers.' + index + '.reflectedUser'"
 :rules="[{ required: true, message: ' xxx, trigger: 'blur' }]"
 >
 <el-input
 v-model="item.reflectedUser"
 maxlength="32"
 :ref="`reflectedUser-${index}`"
 ></el-input>
 </el-form-item>
</div>
メソッド3
<el-form-item
 label="ID番号:"
 :prop="'disActReviewTransfers.' + index + '.idCard'"
 :rules="[{ required: true, message: 'ID番号を記入する', validator:checkIdCard}]"
 >
このようなインラインのカスタムチェックサム関数は、methods部分に記述する必要があります。
checkIdCard(rule, value, cb) {
 if (!value) {
 cb(new Error('ID番号を記入する'))
 } else {
 const regIdCard = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
 if (regIdCard.test(value)) {
 return cb()
 }
 cb(new Error('法的ID番号を記入する'))
 }
 cb()
 }
カスタム校正
data() {
 var reviewReportValid = (rule, value, cb) => {
 this.addDataForm.disActReviewTransfers.forEach((i, index) => {
 if (i.reviewReport === '') {
 cb(rule)
 }
 })
 cb()
 }
 return{}
}
reviewReportValidはmethods部分ではなく、上記の位置に記述する必要があることに注意してください。
addDataFormRules:{
 reviewReport: [
 {
 required: true,
 validator: reviewReportValid,
 trigger: 'blur',
 message: ' ---
 },
 ],
}




