2016-09-01 9 views
2

同じ問題があったdiscussionに続いて、エラーメッセージ「タイプ」を持たずに、複数のモジュールでangular2-materializeのディレクティブをインポートできませんでしたXは2つのモジュールの宣言の一部です "他のNgModuleのNgModuleの共有ディレクティブを読み込めません

私は、与えられた解決策に従うことに決めました:angular2-materializeをそれ自身のモジュールに入れて、私のAppModuleと私のChildrenModuleにモジュールをインポートします。

だから私のMaterializeModule

import { NgModule } from '@angular/core'; 

// Import Materialize CSS + Directives, like indicated in the readme 
// https://github.com/InfomediaLtd/angular2-materialize 
import 'materialize-css'; 
import 'angular2-materialize'; 

import { MaterializeDirective } from 'angular2-materialize'; 

@NgModule({ 
    declarations: [ MaterializeDirective ] 
}) 
export class MaterializeModule { 
} 

マイAppModule

import { MaterializeModule } from './shared/materialize.module'; 

@NgModule({ 
    bootstrap: [ AppComponent ], 
    declarations: [ 
    AppComponent, 
    HeaderComponent, 
    FooterComponent, 
    NoContentComponent 
    ], 
    imports: [ // import Angular's modules 
    BrowserModule, 
    FormsModule, 
    HttpModule, 
    MaterializeModule, 
    RouterModule.forRoot(ROUTES, { useHash: false }) 
    ], 
    providers: [ // expose our Services and Providers into Angular's dependency injection 
    ENV_PROVIDERS, 
    APP_PROVIDERS 
    ] 
}) 
export class AppModule {} 

そして、私のChildrenModule

import { NgModule } from '@angular/core'; 
import { BrowserModule } from '@angular/platform-browser'; 

// Import shared modules 
import { MaterializeModule } from '../shared/materialize.module'; 

// Import child routes 
import { detailsRouting } from './details.routing'; 

// Import app modules 
import { DetailsComponent} from './details.component'; 

@NgModule({ 
    imports: [ 
     BrowserModule, 
     MaterializeModule, 
     detailsRouting 
    ], 
    declarations: [ 
     DetailsComponent 
    ] 
}) 
export class ChildrenModule { } // 

そして、両方のモジュールでは、私は単にMDのモーダルでテンプレートを入れ、終了する:

<a materialize="leanModal" [materializeParams]="[{dismissible: false}]" class="waves-effect waves-light btn modal-trigger blue" href="#missionAccept"> 
       <i class="material-icons left">check</i>Accepter 
      </a> 

私はそれは間違いなく私の問題を解決するだろうと思ったが、ありません。

私が持っている:

can't bind to 'materializeParams' since it isn't a known property of 'a' 

それはMaterializeDirectiveを輸入したことがないように。

今月からこの問題が発生していますが、どこから来たのでしょうか?私の問題を解決し

編集

を私MaterializeModuleで、ディレクティブをエクスポートすることを決して忘れない:ここ

@NgModule({ 
    ... 
    exports: [ MaterializeDirective ] 
}) 

答えて

1

キーは、指示に従って、共有モジュールを使用することですangular.ioで。モジュールを作成し、他のモジュールと共有したいものをインポートします。これらを使用するには、ディレクティブまたはパイプが必要なモジュールに共有モジュールをインポートします。私はすべての私のアプリの上にそれを使用し、その共有可能なので

import { NgModule, ModuleWithProviders } from '@angular/core'; 
import { HttpModule } from '@angular/http'; 
import { RouterModule } from '@angular/router'; 
import { CommonModule } from '@angular/common'; 
import { ReactiveFormsModule } from '@angular/forms'; 
import { AuthorizationService } from '../services/authorization.service'; 
import { LoginService } from '../services/login.service'; 
import { RegisterService } from '../services/register.service'; 
import { ValidationService } from '../services/validation.service'; 
import { AppMenuService } from '../services/appMenu.service'; 
import { AuthGuardService } from '../services/authGuard.service'; 
import {InputTextModule, GalleriaModule, MenubarModule } from 'primeng/primeng' 

@NgModule({ 
    imports: [ CommonModule, RouterModule, HttpModule, MenubarModule, 
       GalleriaModule, InputTextModule ], 
    declarations: [ ], 
    exports: [ CommonModule, ReactiveFormsModule, HttpModule, RouterModule, 
       MenubarModule, GalleriaModule, InputTextModule ] 
}) 

export class SharedModule { 
    static forRoot(): ModuleWithProviders { 
    return { 
    ngModule: SharedModule, 
    providers: [ AppMenuService, AuthorizationService, LoginService, 
        RegisterService, ValidationService, AuthGuardService ] 
     }; 
    } 
} 

:ここ

は私の共有モジュールです。

+0

こんにちは、MaterializeDirectiveを内部に公開して、他のモジュールで使用できるように、そのモジュールをインポートするために、MaterializeDirectiveを公開してください。違いは、NgModuleでexport []プロパティを使用することです。このプロパティを見るのは初めてです。それは仕事を得るためにプロパティを使用する必要がありますか? – DlafCreative

+0

エクスポートしないと、他のモジュールでは利用できません。 –

+0

それは、共有モジュールをそれを含むモジュールのexport []プロパティに追加する必要がありました。 Thx a lot :) – DlafCreative

関連する問題