我有一个在构造函数中填充其字段值的服务。但我希望在调用服务时更新服务的字段值:
服务.ts:
@Injectable()
export class MyDefaultIntl extends OwlDateTimeIntl {
rangeFromLabel = '';
constructor(
private translateService: TranslationService,
) {
super();
console.log('service is constructed');
this.subscribeToTranslations();
}
subscribeToTranslations(): void {
this.translateService
.translateKey('FROM_LABEL')
.subscribe(message => {
console.log('From Message:' + message);
this.rangeFromLabel = message;
});
}
}
在我的 module.ts 中:
@NgModule({
imports: [OwlDateTimeModule,OwlNativeDateTimeModule],
exports: [OwlDateTimeModule,OwlNativeDateTimeModule],
providers: [
{provide: OwlDateTimeIntl, useClass: MyDefaultIntl},
],
})
翻译服务:
@Injectable()
export class TranslationService {
constructor(private translate: TranslateService) {
}
translateKey(key: string, param?: any){
return this.translate.get(key, param);
}
}
现在发生的情况是构造函数只被调用一次,并且永远不会再次构造(即它永远不会被销毁以便可以再次构造)。
因此,由于未调用服务构造函数,因此该rangeFromLabel值稍后在应用程序中不会更改。
有没有办法在服务构建后的后期更改字段值?
或者有什么办法可以破坏服务并重建它?
我在提供者提供部分添加了服务,而不是组件的提供者部分。这会带来什么改变吗?