【发布时间】:2018-03-08 15:38:42
【问题描述】:
这是一个关于使用 angular-l10n 翻译模块的问题,但由于它是一个更具体的打字稿问题,所以我在这里发布。
要动态配置模块(例如设置默认语言),我必须使用以下方法:
load(): Function {
this.localeConfig.language = 'en';
return () => this.l10nLoader.load();
}
localeConfig 和 l10nLoader 都被注入了。
return () => this.l10nLoader.load();必须在最后执行才能真正显示配置后的页面。
我想做的是从 api 加载语言,然后设置配置。
我在一个返回 Observable 的服务中执行此操作,然后在 load() 函数中订阅它。
load(): Function {
this.languageService.getDefaultLanguage().subscribe(
lang => {
this.localeConfig.language = lang;
return ???
}
);
}
问题是:订阅结束时不知道如何返回
this.l10nLoader.load();。如果我在函数结束时返回它,它会在订阅结束之前完成。
订阅完成后如何返回函数类型的东西?
【问题讨论】:
-
你为什么不在那里调用
this.l10nLoader.load()而不是返回包装在箭头函数中的相同内容?退货有什么价值吗? -
在没有 return 语句的情况下做:
load(): Function { this.localeConfig.language = 'en'; this.l10nLoader.load(); }有什么问题吗?我试图在这里理解高阶函数的要求。 -
@sabithpocker 我想最简单的解释方法是如果我链接到文档:robisim74.github.io/angular-l10n/spec/configuration。它在“动态设置”下的第二部分“使用高级初始化”。
标签: javascript angular typescript rxjs