#angular #typescript
#angular #typescript
Вопрос:
Я только начал изучать Angular (v11.0.2 в моем исходном коде), и я столкнулся с поведением, которое я не понял.
Проблема:
Клонировать структуру и код приложения в StackBlitz (основная версия 10, поведение такое же):
смотрите код (после загрузки перейдите вручную к URL / workspace)
Я пытаюсь использовать SubcompComponent
in WorkspaceComponent
(см. HTML-шаблон) для отложенной загрузки WorkspaceModule
(см. AppRoutingModule
И WorkspaceRoutingModule
). Метаданные selector
указаны правильно. Но я действительно не могу понять, что я делаю не так.
Вопрос: Почему компонент не загружается?
Что я пытался сделать:
- Добавление
SubcompComponent
вdeclarations
иexports
вWorkspaceModule
(см. code workspace.module.ts) - Также я попытался использовать
SharedModule
(см. workspace.module.ts тоже (прокомментированные строки)), как указано в модулях совместного использования руководства - Изучил основные статьи документации, в том числе NgModule FAQ Отложенная загрузка NgModules и многие другие.
Наверное, я не вижу леса за деревьями? Есть идеи?
Дополнительные:
Пожалуйста, предложите рекомендации по более детальной отладке (почему конкретный компонент загружается сейчас и когда). Пока я использую только Augury (Chromium) и пишу в VS Code.
Заранее благодарю вас и прошу прощения за мой английский.
Ответ №1:
Рабочая вилка здесь https://stackblitz.com/edit/angular-ivy-jaxkll?file=src/app/workspace/workspace.component.html
- У вас должны быть оба компонента в вашем
workspace
модуле (вас не было) - Вы также должны импортировать свой модуль маршрутизации (вы этого не делали)
@NgModule({ imports: [CommonModule,WorkspaceRoutingModule], declarations: [SubcompComponent,WorkspaceComponent], exports: [SubcompComponent] }) export class WorkspaceModule {}
Комментарии:
1. Спасибо, это работа! Но второй момент немного неясен (вы должны импортировать свой модуль маршрутизации). Не могли бы вы объяснить на пальцах, почему это необходимо? Может быть, в официальной документации есть объяснение?
2. Ваши маршруты определены как отдельный модуль
WorkspaceRoutingModule
, и он не был импортирован в отложенную загрузкуWorkspaceModule
.3. О, Боже, прости мою глупость. Большое вам спасибо!