#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