2016-11-17 2 views
0

Я смотрел на это: https://github.com/mgechev/angular-seed, чтобы понять систему угловых модулей в ее самой простой форме.Система Angular2 с TS

В этом проекте семян есть SharedModule, который имеет как index.ts, так и shared.module.ts. В shared.module.ts он экспортирует Угловой путь - с директивами, экспортом, поставщиками и т. Д. В index.ts он реэкспортирует их. В app.module.ts он импортирует SharedModule.forRoot(), что идеально - это регистрирует NameListService, чтобы быть доступным для всего приложения. Однако, когда необходимо использовать NameListService, его необходимо импортировать, и это делается через import { NameListService } from '../shared/index';, как представлено в home.component.ts, который, кстати, является частью home.module.ts, который также импортирует SharedModule.

По моему мнению, это совершенно неправильно.

Зачем мне это нужно импортировать - это нарушает модульность - что делать, если я использую модуль, который я не написал, и, следовательно, не знаю, где именно искать файл?

Почему бы мне тогда не заниматься созданием и регистрацией вещей в shared.module.ts, если тогда мне придется использовать их через shared/index.ts вместо того, чтобы просто использовать shared/index.ts?

С наилучшими пожеланиями

ответ

1

Я считаю, что этот вопрос был ответ более на сайте ANGULAR в: https://angular.io/docs/ts/latest/cookbook/ngmodule-faq.html#!#q-ng-vs-js-modules

Я рекомендую прочитать https://angular.io/docs/ts/latest/guide/ngmodule.html для в глубине руководство по ngModules

Update

Попытайтесь и подумайте об этом с точки зрения двух разных компиляторов: углового компилятора и машинописного компилятора.

Тот факт, что вы ссылаетесь на UserService по пути, позволяет компилятору typescript найти его. Если он не может найти UserService, ваш код не будет компилироваться. Он также предоставляет вам проверку intellisense и тип. Угловой компилятор не заботится об этом.

Добавление UserService в ngModule позволяет компилятору Angular создать экземпляр этого объекта и предоставить его вашим компонентам, службам и т. Д. Если вы этого не сделали, вы получите сообщение об ошибке: «провайдер не найден для UserService "

+0

Да. Я знаю это, но все же кажется странным (ненужным) использовать обе системы бок о бок, не связывая их друг с другом. Моя проблема с приведенным выше примером заключается в том, что я должен указать, где UserService находится по пути, даже если он является частью действительного модуля Angular. – mp3por

+0

Я обновил свой ответ –

Смежные вопросы