Как передать локаль при вызове службы с помощью angular4

Нужно найти локаль и передать ее в службу (получить) вызов:

Свойство indexOf не существует для типа '() => 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';
    }

person user1877936    schedule 23.10.2019    source источник
comment
Это должно быть this.getshortLanguages().indexOf(languageCode) вам не хватает функции open/close(), которая вызывает метод getshortLanguages(). В противном случае вы возвращаете метод, не вызывая его.   -  person Igor    schedule 23.10.2019


Ответы (1)


Скорее всего, вы пытаетесь использовать геттер, верно?

Для этого нужно отделить 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 ​​без круглых скобок () - это не что иное, как определение вашей функции, а не массив.

person Athanasios Kataras    schedule 23.10.2019