Импорт JSON, настраиваемый во время выполнения, в Typescript и Angular 7 - PullRequest
0 голосов
/ 30 октября 2018

В моем приложении установлена ​​система перевода времени выполнения, которая до перехода на Angular 7 использовала http-запросы для загрузки файла JSON, заполненного переводами, как показано ниже:

loadLanguage(lang: string) {
    this.http.get('assets/lang/' + lang + '.json)
        .toPromise()
        .then((translations) => this.translations = translations; ) 
}

В рамках обновления до Angular 7 я решил попробовать импортировать json напрямую, а не использовать http для его получения. Это новый способ, которым я реализовал это:

async loadLanguage(lang: string) {
    this.translations = await import('assets/lang/' + lang + '.json);
}

Это работает так, как я ожидал бы в плане изменения языка, но проблема, с которой я сталкиваюсь, заключается в том, что изменение файлов JSON после компиляции не влияет на выходные данные импорта.

Из комплекта, созданного компиляцией, похоже, что все импортированные файлы компилируются в порции, которые затем загружаются, когда я запрашиваю этот конкретный файл json. Я просто получаю неправильное представление об этих импортах и ​​о том, как они работают при использовании с веб-пакетом, или есть что-то очевидное, что я упустил при рефакторинге моего решения?

Спасибо

1 Ответ

0 голосов
/ 30 октября 2018

Я не думаю, что вы должны делать это. Поскольку import () конвертируется в required () после компиляции. Кроме того, это не угловая функция, а функция TypeScript. вот очень хорошая и подробная статья о типе https://blog.mariusschulz.com/2018/01/14/typescript-2-4-dynamic-import-expressions

В качестве рекомендации вы должны использовать вызовы http для загрузки динамической конфигурации времени выполнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...