Угловой 2 глобальный компонент

Моя структура следующая:

App
    *component, module, template*
    Component 1
        *component, module, template*
        Component 11
            *component, module, template*
    Global Component
        *component, temaplte, BUT NO MODULE*

Модуль My App содержит модули компонента 1 и компонента 11. Я объявил глобальный компонент в модуле приложения, чтобы я мог использовать его во всех других моих компонентах. Я также экспортировал его в модуль приложения.

Но когда я использую селектор в шаблоне компонента 11, консоль сообщает not a known element.

Я попытался импортировать его в другие мои компоненты, но он говорит, что он уже импортирован, и что я должен импортировать его в модуль более высокого уровня.

Не могли бы вы рассказать мне, как объявить компонент, чтобы его можно было использовать в дочерних шаблонах?


person Community    schedule 02.01.2017    source источник
comment
не могли бы вы разместить коды? по крайней мере, эти файлы модулей ..   -  person SeleM    schedule 02.01.2017
comment
Можете ли вы проверить, экспортирует ли модуль компонента приложения глобальный компонент и импортирует ли модуль компонента 11 модуль компонента приложения?   -  person Davy    schedule 02.01.2017
comment
Извините @ 5313M, я не могу, стек говорит, что у меня проблема с отступом в моем коде, хотя у меня его явно нет (мой код - это 4 пробела с отступом)   -  person    schedule 02.01.2017
comment
@Davy модуль приложения экспортирует компонент, но модуль C11 объявляет компонент. Если я импортирую его, он говорит unknon directive [Global component]   -  person    schedule 02.01.2017


Ответы (2)


Я бы предположил, что «глобальные компоненты» неизвестны в архитектуре angular 2. См. Также здесь ==> https://angular.io/docs/ts/latest/guide/architecture.html

По опыту я знаю, что это может быть проблемой, если компоненты (например, трубы) импортируются на уровне app.module. Например, при выполнении этого с конвейером вы получите ошибку «Канал не найден». Возможно, вы столкнулись с похожей проблемой с вашим компонентом.

Поэтому я бы рекомендовал сделать вашу компонентную часть модуля, а затем импортировать ваш модуль в свой app.module вместо компонента.

person Karl    schedule 02.01.2017
comment
Извините за неправильное употребление слов, но мне это кажется более ясным. И дело в том, что я хочу, чтобы мой компонент использовался в нескольких модулях, возможно ли это, если я импортирую его только в глубокий модуль, а не в корневой модуль? - person ; 02.01.2017
comment
Я думаю, вам было бы лучше, если бы вы представили SharedModule для таких глобальных компонентов (как предложил Карл) - person Davy; 02.01.2017
comment
По этой причине я использовал модуль инструментов - person Karl; 02.01.2017
comment
Итак, дело в том, чтобы создать новый модуль, который я буду использовать в других модулях? - person ; 02.01.2017
comment
Хорошо, я сделал это, и теперь у меня есть ошибки в коде, но вроде работает. Я не знал, что это был правильный способ сделать это. Спасибо вам всем ! - person ; 02.01.2017

Одна вещь, которую вы можете сделать, чтобы легко использовать компоненты в разных модулях, - это создать модуль для вашего компонента (ов) и declare ваш компонент (ы) в этом модуле, а затем всякий раз, когда вы захотите использовать компонент (ы), просто import этот модуль в модуле, который вы хотите использовать компонент (ы).

person Sinandro    schedule 01.07.2019