我开发了一种简单的打字稿来比较下拉值传递的值。
请在下面查看我的代码
即使值='Supervisor',选择也始终转到else方法。
<form id="form2" runat="server" autocomplete="off">
但是,如果我将updateFilter(value: string): void {
// value = 'Supervisor'
if (value === 'Supervisor') {
this.loading = true;
this._dashboardservice.getAllSupervisor().subscribe(
resp => {
this.loading = false;
this.listofmodules = Module [resp.length];
this.listofmodules = resp;
}
);
} else {
this._nzMessage.create('error', 'Only Supervisor are allowed at the moment');
}}
更改为===
。一切正常,但是IDE提示我一个错误==
任何建议都是值得的。谢谢stackoverflow。
更新 尝试其他解决方案。检查是否相同类型。但是仍然没有运气。请在下面查看更新的代码
== should be === tslint(triple-equals)
即使updateFilter(value: string): void {
console.log('Log value: ' + value);
let tempvalue: string;
tempvalue = 'Supervisor';
if (value === tempvalue) {
this.loading = true;
this._dashboardservice.getAllSupervisor().subscribe(
resp => {
this.loading = false;
this.listofmodules = Module [resp.length];
this.listofmodules = resp;
}
);
} else {
this._nzMessage.create('error', 'Only Supervisor are allowed at the moment');
}}
显示console.log('Log value: ' + value);
。
第二次更新
我尝试同时打印valueof和tempvalue的typeof。
Log value: Supervisor
为什么会这样?在函数开始时,我已经声明value = object
tempvalue = string
有什么想法吗?
答案 0 :(得分:0)
在达到某种条件之前尝试修剪琴弦。
value = value.trim();
tempvalue = tempvalue.trim();
对于调试,可以按角度使用escape()
函数,查看是否有多余的字符或符号(输出中未显示)。
console.log(escape(value));
示例:
'Supervisor\r'
其中\ r是回车符,不会在输出中显示为“ \ r”。它将显示为“主管”
但是,如果我使用console.log(escape(value));
,它将显示为:
Supervisor%0D
在console.log()函数中。因此,我将知道,字符串中还有多余的字符,在大多数情况下,可以通过trim()
函数来解决。
由于value
变量是对象类型,请使用valueOf()
函数从对象获取字符串值。然后您可以进行比较。
value = value.valueOf();
答案 1 :(得分:0)
您正在使用value ==='Supervisor',这是一种严格的类型强制函数,它将测量值和类型为true的值,以使其为真。虽然==运算符仅比较值,而不是类型。
检查您的“值”类型,是否为字符串。仅当该值也是一个字符串(与tempvalue相同)时,它才会返回true。