2016-11-25 111 views
1

我想在我的主模塊中註冊一些常用的指令,以便能夠跨所有子模塊使用它們,並且只有它們的一個副本。Angular2 - 在應用程序級別註冊指令

我的問題是,由於某些原因,該指令只在主模塊的聲明組件中被識別,但沒有任何子模塊可以使用它。

我做錯了什麼?有沒有我在這裏失蹤的Angular概念?這是主要模塊和一個簡單的指令,我嘗試在主模塊中導入的子模塊中使用。

我沒有收到任何錯誤或任何跡象表明我做錯了什麼。爲了保持簡短,我編輯了一些導入。讓我知道如果有什麼我應該補充。

指令:

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」),以便識別數據綁定。也可以在應用程序級別執行此操作嗎?

回答