一个类的Angular 2打字稿输出值

时间:2017-11-15 20:39:34

标签: angular typescript angular-i18n

import {TranslateService, LangChangeEvent} from "@ngx-translate/core";
class ExportLanguageFun {
    public currentLang : string;
    constructor(private translate : TranslateService) {  
    }
    public static setValue(): string {
        this.translate
        .onLangChange
    .subscribe(lang => {
     this.currentLang = lang;
    })
    return this.currentLang;
        }
    }

export let exportLanguage = ExportLanguageFun.setValue(); //错误:属性' setValue'在类型' typeof ExportLanguageFun'。

上不存在

预期产出 的console.log(让+" someValue中&#34);

1 个答案:

答案 0 :(得分:0)

你应该在这里重新考虑你的结构。你想要在这里返回的是来自observable内部的lang。你需要重新调整你在这里做的事情。

public static setValue(): string {
    return this.translate.onLangChange
}

然后当你调用该函数时,你可以订阅它并在那里做一些事情。

this.setValue().subscribe(lang => {
  this.currentLang = lang;
  // do something else with it
})

通过订阅,每次有新值时,该函数都会运行。无论你在哪里订阅它,都不需要尝试返回值,只需对每个更改执行一些操作。