【发布时间】:2016-12-13 12:41:55
【问题描述】:
我已经使用 Angular 2 工作了一段时间,但发现自己的问题是我没有找到明确的解决方案,即如何在服务和模型之间创建链接。虽然组件可以注入服务并使其保持单例,使其在全球范围内可用,但我希望在这些组件中声明模型。尝试传递这样的服务似乎会导致它创建当前类状态的“快照”,并且在我将更改应用于我的服务时不会更新。
请允许我举例说明我的意思。采取以下“LanguageObject”模型:它是一个为不同语言存储多个字符串的模型,它应该根据语言服务中当前定义的语言返回正确的字符串:
export class LanguageObject {
nl : string;
fr : string;
en : string;
setvalues(nl : string, fr: string, en: string) {
this.nl = nl;
this.fr = fr;
this.en = en;
}
selectedlanguage : string;
constructor(private languageService : LanguageService) {
this.selectedlanguage = languageService.language;
}
get() :string{
if (this.selectedlanguage == "nl") {
return this.nl;
} else if (this.selectedlanguage == "fr") {
return this.fr;
} else {
return this.en;
}
}
}
服务:
@Injectable()
export class LanguageService {
language : string;
constructor() {
this.language = "en";
}
}
但是模型本身是这样调用的,失去了到服务的正确链接:
constructor(private languageService : LanguageService) {
this.continuestring = new LanguageObject(languageService);
this.continuestring.setvalues("Verder","Continuer","Continue");
}
连续更改服务中语言的值不会导致我的模型更新,除非我将值重新加载到它们中,而我希望它们自动执行此操作。
这引出了我的问题,如何正确地实现允许这些模型检索服务价值的预期效果?我们是使用某种形式的注入,还是 angular2 提供了更好的方法?
【问题讨论】:
标签: angular