Предупреждение компилятора при отложенной загрузке компонента с помощью динамического c импорта - PullRequest
0 голосов
/ 18 марта 2020

Я использую Angular 9 и его компилятор ivy.

Я пытаюсь лениво загрузить компонент с помощью функции импорта dynamici c и componentFactoryResolver:

const comp = await import('path/component.ts').then(x => x.component)
const factory = this._resolver.resolveComponentFactory(comp);
this.viewContainerRef.createComponent(factory)

It работает как положено, я могу загрузить компонент и использовать его, но когда ленивый загруженный компонент использует компонент-брат, объявленный в том же модуле, что и ленивый загруженный компонент, я получаю следующее предупреждение:

ПРЕДУПРЕЖДЕНИЕ в ./src/app/core/components/component.html 1: 0 Ошибка синтаксического анализа модуля: неожиданный токен (1: 0) Вам может потребоваться соответствующий загрузчик для обработки этого типа файла, в настоящее время загрузчики не настроены для обработки этого файла .

Проблема с этим предупреждением заключается в том, что оно, очевидно, создает файлы. js в папке dist, содержащей предупреждение.

Ответы [ 2 ]

1 голос
/ 18 марта 2020

Когда вы лениво загружаете компонент с помощью componentFactoryResolver, этот компонент не подключен к модулю, который вы объявляете, поэтому он не знает, что это за другой компонент.

Предлагаю прочитать больше об этом здесь:

0 голосов
/ 18 марта 2020

Нашел проблему.

Я использую динамические c пути в функции import (), чтобы уменьшить длину пути, которую нужно написать при добавлении нового компонента.

Очевидно, веб-пакет не может обработать такие динамические c путей и распечатывает предупреждения.

Я теперь создал словарь всех компонентов со всем импортом, как это:

componentPath: () => import('./src/core/component/component.ts')
...