Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 如何解决角度传感器中频条件下的逻辑误差_Angular_Typescript_If Statement - Fatal编程技术网

Angular 如何解决角度传感器中频条件下的逻辑误差

Angular 如何解决角度传感器中频条件下的逻辑误差,angular,typescript,if-statement,Angular,Typescript,If Statement,我有一个非常简单的逻辑,我写了一些条件,我发现这个逻辑非常好,但它总是给出错误的结果。 我有三个字段:立即限制、持有限制和最不发达国家。因此,条件是当立即限值和保持一个限值是数值时,它们的总和应小于LDC,每个限值的单个值也应小于LDC。(当限值不是数值时,它们返回负数。) 这是我的密码: immediateLimitError: boolean = false; hold1LimitError: boolean = false; ldcLimitError: boolean = false;

我有一个非常简单的逻辑,我写了一些条件,我发现这个逻辑非常好,但它总是给出错误的结果。 我有三个字段:立即限制、持有限制和最不发达国家。因此,条件是当立即限值和保持一个限值是数值时,它们的总和应小于LDC,每个限值的单个值也应小于LDC。(当限值不是数值时,它们返回负数。)

这是我的密码:

immediateLimitError: boolean = false;
hold1LimitError: boolean = false;
ldcLimitError: boolean = false;
sumOflimitVal: any;
changedLdc!: any;
changedImmediateLimit!: any;
changedHold1Limit!: any;

private instantiateValidation(row: any) {
        this.newHoldSchedule = this.formBuilder.group({
            immediatereleaseForm: [(row.hold1ReleaseAmt != null ? row.hold1ReleaseAmt : ' '), Validators.required],
            ldcForm: [(row.ldcAmt != null ? row.ldcAmt : ' ')],
            holdOneLimitForm: [(row.hold2ReleaseAmt != null ? row.hold2ReleaseAmt : ' '), Validators.required]
        });
        this.changedImmediateLimit = row.hold1ReleaseAmt;
        this.changedHold1Limit = row.hold2ReleaseAmt;
        this.changedLdc = row.ldcAmt;

        this.newHoldSchedule.get('immediatereleaseForm')!.valueChanges.subscribe(val => {
            this.changedImmediateLimit = val;
            if(this.changedHold1Limit >= 0 || val >= 0 ){
                if((val + this.changedHold1Limit) > this.changedLdc || 
                    val > this.changedLdc || 
                    this.changedHold1Limit > this.changedLdc){
                        this.immediateLimitError = true;
                }
                else{
                    this.immediateLimitError = false;

                }
            }
          });
          this.newHoldSchedule.get('holdOneLimitForm')!.valueChanges.subscribe(val => {
              this.changedHold1Limit = val;
              if(this.changedImmediateLimit >= 0 || val >= 0 ){
                if((val + this.changedImmediateLimit) > this.changedLdc || 
                    val > this.changedLdc || 
                    this.changedImmediateLimit > this.changedLdc){
                    this.hold1LimitError = true;
                }
                else{
                    this.hold1LimitError = false;
                }
              }
            });
            this.newHoldSchedule.get('ldcForm')!.valueChanges.subscribe(val => {
                this.changedLdc = val;
              if(this.changedImmediateLimit >= 0 || this.changedHold1Limit >= 0 ){
                if(val < (this.changedImmediateLimit + this.changedHold1Limit) || 
                    this.changedHold1Limit > val || 
                    this.changedImmediateLimit > val){
                    this.ldcLimitError = true;
                }
                else{
                    this.ldcLimitError = false;
                }
              }
            });

}

if(this.immediateLimitError || this.hold1LimitError || this.ldcLimitError){
                    this.displayError('The sum of Immediate Release limit and Hold 1 Limit exceeds LDC');
                    event.preventDefault();
                }
immediateLimitError:boolean=false;
hold1LimitError:布尔值=false;
ldcLimitError:boolean=false;
sumOflimitVal:任何;
更改DC!:任何
更改DIMMEDIATELIMIT!:任何
更改hold1limit!:任何
私有实例化Evalidation(行:任意){
this.newHoldSchedule=this.formBuilder.group({
immediatereleaseForm:[(row.hold1releaseMat!=null?row.hold1releaseMat:”),验证器。必需],
ldcForm:[(row.ldcAmt!=null?row.ldcAmt:“”],
holdOneLimitForm:[(row.hold2ReleaseAmt!=null?row.hold2ReleaseAmt:”),验证器。必需]
});
this.changedimediatelimit=row.hold1releasemt;
this.changedHold1Limit=row.hold2releasemant;
this.changedlddc=row.ldcAmt;
this.newHoldSchedule.get('immediatereleaseForm')!.valueChanges.subscribe(val=>{
this.changedimediatelimit=val;
如果(this.changedHold1Limit>=0 | | val>=0){
如果((val+this.changedHold1Limit)>this.changedlddc |
val>this.changedlddc |
this.changedHold1Limit>this.changedLdc){
this.immediateLimitError=true;
}
否则{
this.immediateLimitError=false;
}
}
});
this.newHoldSchedule.get('holdonelimform')!.valueChanges.subscribe(val=>{
this.changedHold1Limit=val;
如果(this.changedImmediateLimit>=0 | | val>=0){
如果((val+this.changedImmediateLimit)>this.changedlddc |
val>this.changedlddc |
this.changedimediatelimit>this.changedLdc){
this.hold1limitror=true;
}
否则{
this.hold1limitror=false;
}
}
});
这个.newHoldSchedule.get('ldcForm')!.valueChanges.subscribe(val=>{
this.changedLdc=val;
如果(this.changedMediateLimit>=0 | | this.changedHold1Limit>=0){
如果(val<(this.changedMediateLimit+this.changedHold1Limit)|
this.changedHold1Limit>val | |
this.changedimediatelimit>val){
this.ldcLimitError=true;
}
否则{
this.ldcLimitError=false;
}
}
});
}
if(this.immediateLimitError | this.hold1LimitError | | this.ldcLimitError){
此.displayError(“立即释放限制和保留1限制之和超过LDC”);
event.preventDefault();
}

这段代码对某些值起作用,有些值给出了错误的结果。我尝试过调试和更改条件,但它无法按我希望的方式工作。任何帮助都将不胜感激。谢谢

似乎所有的值都是异步分配的,但都是单独分配的。因此,在检查条件之前,无法确保其他值已正确更新

相反,您可以使用RxJS
combinelatetest
函数来组合可观测值和
startWith
操作符来提供种子值

试试下面的方法

私有实例化evalidation(行:任意){
this.newHoldSchedule=this.formBuilder.group({
immediatereleaseForm:[(row.hold1releaseMat!=null?row.hold1releaseMat:”),验证器。必需],
ldcForm:[(row.ldcAmt!=null?row.ldcAmt:“”],
holdOneLimitForm:[(row.hold2ReleaseAmt!=null?row.hold2ReleaseAmt:”),验证器。必需]
});
组合测试(
this.newHoldSchedule.get('immediatereleaseForm')!.valueChanges.pipe(startWith(row.hold1releasemant)),
this.newHoldSchedule.get('holdonelimiteform')!.valueChanges.pipe(startWith(row.hold2releaseam)),
this.newHoldSchedule.get('ldcForm')!.valueChanges.pipe(startWith(row.ldcAmt))
).订阅(
([ChangedMimediateLimit,changedHold1Limit,changedLdc])=>{
如果(
(ChangedMediateLimit的类型==“编号”&&changedHold1Limit的类型==“编号”)&&
((changedimediatelimit+changedHold1Limit)

条件是根据您的问题编写的。你可以根据需要调整它。符合您的要求。

非常感谢。我在寻找一些合并选项。它仍然没有解决我的问题。但它确实帮助我优化了代码