javascript - Angular 7 - 布尔值总是计算为真
问题描述
我在 Angular 7 中有一个布尔值,我用它在对象构造函数中设置一个值。布尔值作为参数传递,我将其存储在本地。
但是,由于某种原因,布尔值总是评估为真。
这是有问题的代码:
ngOnInit() {
this.id = this.route.snapshot.params['id'];
this.showPersonal = this.route.snapshot.params['showPersonal'];
console.log("ngOnInit, this.id: " + this.id);
console.log("ngOnInit, this.showPersonal: " + this.showPersonal);
// if showPersonal is true, workRelated i.e. last item in constructor, is false
if (this.showPersonal){
console.log("showPersonal is true, setting work related to false")
this.showWorkRelated = false;
}
else {
console.log("showPersonal is false, setting work related to true")
this.showWorkRelated = true;
}
console.log("this.showWorkRelated: " + this.showWorkRelated)
这是输出:
todo.component.ts:28 ngOnInit, this.showPersonal: false
todo.component.ts:32 showPersonal is true, setting work related to false
todo.component.ts:40 this.showWorkRelated: false
我尝试了很多不同的方法,但它总是评估为真。这段代码有什么问题?
解决方案
看起来您this.route.snapshot.params['showPersonal']
返回了一个字符串false
,因此将if (this.showPersonal)
其视为 true。
您应该尝试使用typeof this.showPersonal
来查看变量是哪种类型。
推荐阅读
- javascript - vue 指令和方法
- python - 如何从两个列表中创建熊猫数据框
- django - 如何在 JSON 字段数组中搜索子字符串?
- javascript - Fullcalendar 5 with Angular:事件中的组件
- c# - 对常量顺序类型值使用和运算符
- javascript - 使用 javascript 删除应用于所有元素的 css 属性
- sql - 如何在 SQL where 子句中做条件语句
- docker - Dockerized Apache Beam 返回“未提供 ID”
- javascript - +1 按钮的奇怪行为
- max - 如何为每个组(家庭)分配一个变量的最大值?