如何使用angular4在获取服务调用中传递语言环境

How to pass locale in get service call using angular4

需要找到语言环境并将其传递给服务 (get) 调用:

Property 'indexOf' does not exist on type '() => string[]'

标题

角度4.

//Call Languages 
getshortLanguages() {      
        return new Array('en', 'es', 'fr', 'it', 'pt', 'de', 'ru', 'tr', 'ko', 'ja', 'zh-cn', 'zh-hk');
    }

    getLocale() {
        const locale = this.dbservice.getSessionContext().locale.toLowerCase();
        var Languages = this.getshortLanguages;
        if (!locale) return 'en';     
        var languageCode = locale.split('-')[0].toLowerCase();    
        if (this.getshortLanguages.indexof(languageCode)>-1 ) {
            return languageCode;
        }
        else return 'en';
    }

您很可能正在尝试使用 getter 对吧?

为此,您需要像这样将 get 与名称分开:

//Call Languages 
get shortLanguages() {      
    return new Array('en', 'es', 'fr', 'it', 'pt', 'de', 'ru', 'tr', 'ko', 'ja', 'zh-cn', 'zh-hk');
}

getLocale() {
    const locale = this.dbservice.getSessionContext().locale.toLowerCase();
    var Languages = this.getshortLanguages;
    if (!locale) return 'en';     
    var languageCode = locale.split('-')[0].toLowerCase();    
    if (this.shortLanguages.indexof(languageCode)>-1 ) {
        return languageCode;
    }
    else return 'en';
}

否则,你应该得到伊戈尔提到的方式。在您的情况下,没有括号 () 的 getShortLanguages 只不过是函数的定义,根本不是数组。