Импорт настраиваемого во время выполнения JSON в Typescript и Angular 7

В моем приложении есть система перевода времени выполнения, которая до перехода на 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. Я просто неправильно понимаю этот импорт и то, как они работают при использовании с webpack, или есть что-то очевидное, что я пропустил при рефакторинге своего решения?

Спасибо


person peppermcknight    schedule 30.10.2018    source источник


Ответы (1)


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

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

person ravi kant    schedule 30.10.2018
comment
Да, набирая этот вопрос, я подумал, что, возможно, ошибся, пытаясь использовать динамический импорт TS для моей конфигурации. Спасибо за ваш быстрый ответ. - person peppermcknight; 30.10.2018