Angular 更改服务中变量的值

Angular 更改服务中变量的值,angular,Angular,我正在Angular中创建一个应用程序,希望通过服务更改变量的值 #函数 hide(menu) { console.log(menu) if (menu == true) { menu = false } else { menu = true } } 主成分分析 hide_menu() { hide(this.menu) } 在这种情况下,我可以在控制台中看到菜单为true,但值不会更改。您的服务方法应该返回一个值 hide(menu) { c

我正在Angular中创建一个应用程序,希望通过服务更改变量的值 #函数

hide(menu) {
  console.log(menu)
  if (menu == true) {
    menu = false
  } else {
    menu = true
  }
}
主成分分析

hide_menu() {
    hide(this.menu)
  }

在这种情况下,我可以在控制台中看到菜单为true,但值不会更改。

您的服务方法应该返回一个值

hide(menu) {
  console.log(menu)
  if (menu == true) {
    menu = false
  } else {
    menu = true
  }
  return menu;
}
然后需要在此处赋值:

hide_menu() {
  this.hide =  hide(this.menu);
}

若菜单是一个对象,你们可以“通过引用”传递它。但是如果它的布尔值在函数之外不会改变。这里描述得很好:

您的服务方法应该返回一个值

hide(menu) {
  console.log(menu)
  if (menu == true) {
    menu = false
  } else {
    menu = true
  }
  return menu;
}
然后需要在此处赋值:

hide_menu() {
  this.hide =  hide(this.menu);
}

若菜单是一个对象,你们可以“通过引用”传递它。但是如果它的布尔值在函数之外不会改变。这里描述得很好:

布尔是一种基本类型,如字符串、数字、未定义或null。基元类型是不可变的。如果修改作为基元类型的方法参数,则它不会影响原始值(
(在main component.ts中)
)。作为对象、数组或映射的引用类型是可变的,因此当您修改副本(方法参数)时,原始类型也将通过引用进行修改

在您的情况下,应该返回值并将其分配到
main component.ts

hide(menu) {
 return !(menu == true) // shortened form but result is the same
}

hide_menu() {
 this.isHidden = hide(this.menu);
}

Boolean是字符串、数字、未定义或null等基本类型。基元类型是不可变的。如果修改作为基元类型的方法参数,则它不会影响原始值(
(在main component.ts中)
)。作为对象、数组或映射的引用类型是可变的,因此当您修改副本(方法参数)时,原始类型也将通过引用进行修改

在您的情况下,应该返回值并将其分配到
main component.ts

hide(menu) {
 return !(menu == true) // shortened form but result is the same
}

hide_menu() {
 this.isHidden = hide(this.menu);
}

在不掌握语言本身的情况下直接跳入框架(例如Angular)确实是个坏主意。如果我可以建议的话,暂缓使用Angular,并仔细阅读Kyle Simpson的“你不懂JavaScript”一两次。在没有掌握语言本身的情况下直接跳入框架(例如Angular)确实是个坏主意。如果我可以建议的话,暂时搁置Angular,看一两遍Kyle Simpson的“你不懂JavaScript”。