2017-01-02 2 views
7

Я не могу сделать директивную работу в ленивом загруженном модуле. Я прочитал документацию, и я просто добавил директиву в массив объявлений моего основного модуля. Директива работает так, как ожидалось в этом модуле, но она не работает в ленивых загружаемых модулях. Он даже предотвращает ленивым загружен модуль должен быть открыт из-за ошибки шаблона:Директива не работает в дополнительном модуле

Can't bind to 'myHighlight' since it isn't a known property of 'p' 

Вот мой Plunker.

Заканчивать ошибки в консоли после нажатия «перейти к ребенку»

+0

Это указано в документации, но я не понимаю, как в основном модуле, директива хорошо объявлена ​​... https://angular.io/doc s/ts/latest/guide/attribute-directives.html #! # your-directive-isn-t-working- –

+0

Уточнить проблему, может быть, это еще одна проблема? Когда вы публикуете ссылку на код, убедитесь, что код проблемы сопровождается вопросом. –

+0

@RomanC Извините за плохое объяснение. Я отредактировал вопрос. – omeralper

ответ

17

Это потому, что ваша директива объявлена ​​в AppModule и он доступен только там. Если вы хотите использовать директиву в обоих модулях, вы можете создать SharedModule, а затем объявить и экспорт директивы оттуда, а затем импортировать SharedModule в вашем AppModule и вашей ChildModule:

@NgModule({ 
    declarations: [ HighlightDirective ], 
    exports: [ HighlightDirective ] 
}) 

export class SharedModule {} 

Теперь вам просто нужно добавить SharedModule к AppModule и ChildModule.

Примечание:

Вы должны удалить директиву от деклараций AppModule «s, так как он может быть объявлен только один раз.

+1

Но разве объявления, объявленные в AppModule, не будут доступны во всем мире во всем приложении? – echonax

+3

@echonax Нет, единственный способ сделать что-нибудь глобально доступным - это тот, который я описал, по крайней мере, в этот момент. –

0

Я столкнулся с аналогичной проблемой в нашем проекте. У меня был shared.module, но он все еще бросил ошибку

Can't bind to 'pathForUploading' since it isn't a known property of 'div'

Я имел этот код

<div class="avatar" 
    fileUploader 
    [pathForUploading]="'path'" 
    (onFileUploaded)="updateAvatar()"></div> 

И это пошло после изменения атрибута вызова в

pathForUploading="path" 

Надеется, что это поможет кому-то

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