首页 > 解决方案 > 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

我尝试了很多不同的方法,但它总是评估为真。这段代码有什么问题?

标签: javascriptbooleanangular7

解决方案


看起来您this.route.snapshot.params['showPersonal']返回了一个字符串false,因此将if (this.showPersonal)其视为 true。

您应该尝试使用typeof this.showPersonal来查看变量是哪种类型。


推荐阅读