假设我在Angular 5中有一个看起来像
的服务@Injectable()
export class CognitoUtil {
constructor(
private anotherService: AnotherService
) {}
public static GREETING = "Howdie Partner";
}
变量GREETING
的生命周期是多少?
什么时候设定?应用程序加载之前是否设置它甚至是自助引导(对我来说似乎如此)?无论如何都要在它运行之前发生一些事情 - 例如,将可能影响最终给定值的其他值设置为GREETING
?
我真的很感激对此有所澄清。
谢谢!
答案 0 :(得分:1)
首先,我认为你对“何时设定”是正确的。
其次,从我的角度来看,你不应该在服务中使用静态变量,因为你违反了依赖注入模式。
如果你必须使用它,我想你可以尝试使用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 { }