メインモジュールで一般的に使用されているディレクティブをいくつか登録して、すべてのサブモジュールでそれらを使用できるようにしようとしています。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 { }
編集:私は私のアプリ内でポリマー成分を使用し、VaadinからAngular2ポリマーを使用しています。 データバインディングが認識されるためには、各モジュールでPolymerElement( "polymer-element-name")に言及する必要があるようです。アプリレベルでもそれを行うことは可能ですか?