Я пытаюсь зарегистрировать несколько обычно используемых директив в моем основном модуле, чтобы иметь возможность использовать их во всех подмодулях и иметь только одну копию.Angular2 - Регистрация директивы на уровне приложения
Моя проблема заключается в том, что по какой-то причине директива распознается только в объявленных компонентах основного модуля, но ни один из дочерних модулей не использует ее.
Я делаю что-то неправильно? Существует ли уклонная концепция, которую я здесь отсутствует? Это основной модуль и простая директива, которую я пытаюсь использовать в дочерних модулях, импортированных в основной модуль.
У меня нет какой-либо ошибки или каких-либо признаков, я делаю что-то неправильно. Чтобы сохранить его, я отредактировал часть импорта. Дайте мне знать, если есть что-то еще, что я должен добавить.
Директива:
import {Directive, OnChanges, Input, ElementRef, Renderer} from '@angular/core';
@Directive({
selector:'[readonlyCustom]'
})
export class ReadonlyDirective implements OnChanges{
@Input('readonlyCustom') val: boolean;
constructor(private el: ElementRef, private renderer: Renderer) {}
ngOnChanges(c){
if(c && c.val && c.val.currentValue === true){
this.el.nativeElement.readonly = c.val.currentValue;
}
else if(c && c.val && c.val.currentValue === false){
this.el.nativeElement.readonly = c.val.currentValue;
}
}
}
AppModule.ts
/* .... A bunch of imports... */
import {PolymerElement} from "@vaadin/angular2-polymer";
import {ReadonlyDirective} from "./shared/directives/readonlyDirective";
@NgModule({
declarations: [
/*some other declarations */
ReadonlyDirective
],
imports: [
/* ... some module imports ....*/
/* ... child modules ....*/
UsersModule,
RolesModule,
OrgModule,
GroupsModule,
],
entryComponents:[/*some components*/],
providers: [/*some services*/],
bootstrap: [AppComponent],
schemas:[CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule { }
Edit: Я использую полимерные компоненты внутри моего приложения и использование Angular2-полимера из Vaadin. Кажется, что я должен упомянуть PolyymerElement («полимер-элемент-имя») в каждом модуле, чтобы распознать привязку данных. Возможно ли это сделать и на уровне приложения?