Angular 2: использовать компонент из модуля в маршрутизации

#angular #angular2-routing

#angular #angular2-маршрутизация

Вопрос:

В angular 2, скажем, у меня есть маршрут, который использует компонент:

 { path: 'new-project', component: BasicForm },
  

Теперь это работает, если я импортирую компонент напрямую:

 import { BasicForm } from './foo/basicForm.component';
  

Но как мне вместо этого импортировать модуль:

 import { BasicForm } from './foo/basicForm.module';
  

Это не работает, потому BasicForm что определено не в файле модуля, а в файле компонента.

Чтобы компонент загружался со всеми доступными импортами и объявлениями модуля?


Следуя предложению @HristoKolev, я добавил это в модуль:

 export { BasicForm } from './basicForm.component';
  

И это позволяет маршруту видеть компонент BasicForm из модуля.

Однако компонент BasicForm, похоже, не видит импорт из NgModule. В частности, BasicForm не имеет доступа к FormsModule, определяемому модулем компонента:

 import { FormsModule } from '@angular/forms';
...
@NgModule({
  imports: [CommonModule, FormsModule],
  declarations: [BasicForm]
})
  

Но в шаблоне BasicForm ошибка:

 Can't bind to 'ngModel' since it isn't a known property of 'input
  

Строка шаблона, вызывающая ошибку:

 <input type="text" class="form-control" id="directory" placeholder="foo" [(ngModel)]="project.directory">
  

Таким образом, angular не находит директиву ngModel из FormsModule при разборе этого шаблона.

Комментарии:

1. NgModule также имеет свойство ‘exports’ — вы можете попробовать использовать его, но я не уверен, сможете ли вы использовать его так, как хотите.

2. @spongessuck Ваша репутация в настоящее время составляет 666 … не уверен, что я должен доверять вашим советам 🙂

3. Вы могли бы исправить это с помощью upvote … 😉

4. @spongessuck Ок, готово: P

Ответ №1:

В файле модуля добавьте export * from './basicForm.component';

Комментарии:

1. Это позволяет мне использовать компонент из маршрута путем импорта модуля, но определения модулей, похоже, недоступны в компоненте. Обновленный вопрос.

2. Я не понимаю, почему он будет вести себя таким образом. Попробуйте импортировать BrowserModule