gpt4 book ai didi

javascript - 从模块导出的变量在 Angular 类的函数内部无法访问

转载 作者:行者123 更新时间:2023-11-30 19:18:32 25 4
gpt4 key购买 nike

我有一个 Angular 文件(服务文件)。我正在从中导出一个变量并在其他文件(component.ts)中使用它。

当我在类外访问它的值时,它工作正常,但是当我在组件类内声明的任何函数中使用它时,它显示变量未定义。

在 Angular 中,每个模块都有自己的范围,ts 文件转换为 js,类转换为函数。所以根据我对javascript的理解,函数外的变量应该是可用的。但是当我将它分配给类外的某个声明变量时它正在工作。

我哪里不了解这种行为?

    import {UserService ,b} from './services/user.service';
console.log(b);// working
//var t=b; working

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css'],
providers:[UserService]
})
export class AppComponent implements DoCheck , AfterContentInit,AfterContentChecked {
title = 'project';
a:any="joshi";
constructor(private vc: ViewContainerRef ,private user:UserService){
console.log("parent constr")

}
update(){
//t="changed"; working
b="changed" //not working
this.user.setObservable();

}
}

最佳答案

这是不可能的,因为在模块之外,变量被视为const。如果它是一个对象,比如

export let b = { name:  "shashank" };

你本可以改变它。

解决方法是创建一个函数,允许您从模块本身的内部更改它的值,例如:

export let b = "shashank";

export let setB = (value) => {
b = value;
}

组件中:

update(){
setB("Hero");
console.log(b)
this.user.setObservable();
}

话虽如此,我认为您做错了什么。 b 位于 UserService 中,因此它可以用作 this.user.b 而不是显式导入它。

您使用的方法似乎不正确(除非您还有更多事情要做并且您没有在问题中提及)

关于javascript - 从模块导出的变量在 Angular 类的函数内部无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57738037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com