我正在尝试在角度4应用程序中实现验证逻辑。如果任何数据无效,我需要阻止用户保存。
如果您发现我有isMinValid
和isMaxValid
功能。我已声明了两个私有变量_isMinValid
& _isMaxValid
字段并使用true或false初始化它。
我在Ok方法中检查此变量的值,该方法保存信息。
我面临的问题是,为表中的每一行调用isMinValid
和isMaxValid
函数,因此如果下一行是true
,则为私有字段分配值因此。因此,最后一个值可能是true
。我该如何解决这个问题?
<tr *ngFor="let item of domicileInfo.taxAssesment.items; let last = last; let item_IDX = index">
<td *ngIf="!last">
<click-input [classNames]="{'has-warning': !isMinValid(item,item_IDX), 'number' : true}">
<input [(ngModel)]="item.minSize" required min="0" max="999999999999999" shortNumberFormat="shortNumberFormat:.0">
</click-input>
</td>
<td *ngIf="!last" class="text-right">
<click-input [classNames]="{'has-warning': !isMaxValid(item,item_IDX), 'number' : true }">
<input [(ngModel)]="item.maxSize" required min="0" max="999999999999999" shortNumberFormat="shortNumberFormat:.0">
</click-input>
</td>
</tr>
private _isMinValid: boolean = false;
private _isMaxValid: boolean = false;
public ok() {
if (this._isMinValid && this._isMaxValid) {
this.data.domicileId = this.domicileId;
this.data.domicileInfo = this.domicileInfo;
this.hide(true);
}
}
isMinValid(currentItem: any, item_IDX: number) {
if (item_IDX === 0) {
this._isMinValid = true;
return true;
}
let previousItem = this.domicileInfo.taxAssesment.items[item_IDX - 1];
if (+currentItem.minSize !== +previousItem.maxSize) {
this._isMinValid = false;
return false;
}
this._isMinValid = true;
return true;
}
isMaxValid(currentItem: any, item_IDX: number) {
if (item_IDX === 0) {
this._isMaxValid = true;
return true;
}
if (+currentItem.maxSize <= +currentItem.minSize) {
this._isMaxValid = false;
return false;
}
this._isMaxValid = true;
return true;
}
答案 0 :(得分:0)
看起来,你想让它们对于第一个索引是真的,然后添加到你的代码中:你可以检查_isMaxValid
和_isMinValid
是否已经为假,如果是,那么就不要不会给他们真实的。
isMaxValid(currentItem: any, item_IDX: number) {
if (item_IDX === 0) {
this._isMaxValid = true;
return true;
}
if (+currentItem.maxSize <= +currentItem.minSize) {
this._isMaxValid = false;
return false;
}
if (this._isMaxValid) {
this._isMaxValid = true;
}
return true;
}
对min有效的类似事情。
现在,如果您还想检查第一个元素,请检查item_IDX
以及this._isMaxValid
。例如:
isMaxValid(currentItem: any, item_IDX: number) {
if (+currentItem.maxSize <= +currentItem.minSize) {
this._isMaxValid = false;
return false;
}
if (item_IDX === 0) {
this._isMaxValid = true;
}
else if (this._isMaxValid) {
this._isMaxValid = true;
}
return true;
}