我是Java的新手。我从Angular的一个非常基础的项目开始,即表单验证。就我而言,我只能在自己内部调用自定义方法validationTest()
一次。如果我不设置任何中断条件,那么将有太多的递归。我必须停止这个。我尝试了许多其他解决方案:
Break Statement in TypeScript
TypeScript - Loops
我非常仔细地关注了他们,但是我得到了:
模块解析失败:语法中断(84:12)
这是我的代码:
validationTest() {
let count =0;
this.isAnyRangeInvalid = false;
this.monthpicker.forEach(picker => {
if (picker.isValidRange === false) {
this.isAnyRangeInvalid = true;
}
});
count ++;
if(count===1) {
break;
}
this.validationTest();
}
甚至VScode编辑器也在标记
break
下显示一条红色的锯齿形线。我来自Java和CPP背景。请纠正我。
最佳答案
要停止执行功能,请使用return
。 break
仅在for
或while
循环的上下文中才有意义。
但是另一个问题是您的validationTest
没有count
变量的持久视图-它是完全本地的,因此该测试无论如何都不会起作用。考虑改为传递一个参数,该参数将指示当前调用是否是递归的:
validationTest(lastTry = false) {
this.isAnyRangeInvalid = false;
this.monthpicker.forEach(picker => {
if (picker.isValidRange === false) {
this.isAnyRangeInvalid = true;
}
});
if (!lastTry) this.validationTest(true);
}
确保
validationTest
的初始调用没有传递参数,也没有传递false
。对于将自己限制为N个递归尝试的更通用的解决方案,您可以改为传递数字,例如:
validationTest(triesLeft = 3) {
this.isAnyRangeInvalid = false;
this.monthpicker.forEach(picker => {
if (picker.isValidRange === false) {
this.isAnyRangeInvalid = true;
}
});
if (triesLeft !== 0) this.validationTest(triesLeft - 1);
}
关于javascript - 如何在Typescript中使用break语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60518895/