假设我在 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/