gpt4 book ai didi

angular - 在 Angular2+ 中,什么时候设置静态变量?

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:08 25 4
gpt4 key购买 nike

假设我在 Angular 5 中有一个看起来像这样的服务

@Injectable()
export class CognitoUtil {

constructor(
private anotherService: AnotherService
) {}

public static GREETING = "Howdie Partner";

}

GREETING 变量的生命周期是多少?

什么时候设置?它是在应用程序被加载之前就被设置的吗(在我看来是这样)?在它运行之前是否有任何事情发生 - 例如,将可能影响最终给定值的其他值设置为 GREETING

我真的很感激对此的一些澄清。

谢谢!

最佳答案

首先,我认为您关于“何时设置”的说法是正确的。

其次,在我看来,您不应该在服务中使用静态变量,因为您违反了依赖注入(inject)模式。

如果一定要用,我想你可以尝试使用Angular提供的APP_INITIALIZER。

例如:

import { HttpClientModule } from "@angular/common/http";

import { CognitoService } from './cognito.service';
import { AnotherService } from './another.service';

export function init_app(anotherService : AnotherService ) {
return () => {
CognitoService.GREETING = anotherService.someValue;
};
}

@NgModule({
imports: [HttpClientModule],
providers: [
AnotherService,
CognitoService,
{ provide: APP_INITIALIZER, useFactory: init_app, deps: [AnotherService], multi: true }
]
})
export class AppLoadModule { }

关于angular - 在 Angular2+ 中,什么时候设置静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49144338/

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