2016-09-22 13 views
4

前回私がAngular2を使用していた時、ディレクティブはまだ存在していますが、今度はapp.modules.tsに宣言があります。問題は、私が特定のコンポーネントでのみで、メインではないディレクティブを使用する場合、どうすればよいのでしょうか?特定のコンポーネントにおける角2の宣言

customers.component.ts

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

@Component({ 
    selector: 'app-customers', 
    templateUrl: 'app/customer/customers.component.html' 
}) 

export class CustomersComponent { 
    customers = [ 
    { id: 1, name: 'Mix'}, 
    { id: 2, name: 'Ian'}, 
    { id: 3, name: 'Aniel'}, 
    { id: 4, name: 'Jess'}, 
    { id: 5, name: 'Jusi'}, 
    ]; 
} 

customer.component.ts

import { Component, Input } from '@angular/core'; 

@Component({ 
    selector: 'app-customer', 
    templateUrl: 'app/customer/customer.component.html' 
}) 

export class CustomerComponent { 
    @Input() customer: {id: number, name: string}; 

    myColor = 'gray'; 
} 

app.module.ts

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

import { AppComponent } from './app.component'; 
import { CustomerComponent } from './customer/customer.component'; 
import { CustomersComponent } from './customer/customers.component'; 

@NgModule({ 
    imports: [ BrowserModule, FormsModule ], 
    declarations: [ AppComponent, CustomerComponent, CustomersComponent ], 
    bootstrap: [ AppComponent ] 
}) 
export class AppModule { } 

私は何を考えて、私はコンポーネントを置くときであります宣言では、以前とは異なり、すべてのコンポーネントがそのコンポーネントにアクセスできます。特定のコンポーネントでのみ宣言できます。私がここで間違っている場合は私を修正し、ディレクティブの宣言にはより良い選択肢があるかどうかを提案してください。

+0

は、モジュール内の他のすべてのコンポーネントがそれを再宣言することなく、それを使用することができます。なぜあなたは単にそれをいくつかのコンポーネントで使いたいのですが、それはなぜ問題なのですか? –

+1

私の見解では、なぜグローバル変数の使用をやめるか、減らす必要があるのか​​という質問です。特定の関数またはメソッドだけにアクセスを制限するためには?誤って間違った方法でグローバル変数に誤ってアクセスした場合、それはうんざりしません。 –

+0

CustomerComponentのNgModuleを作成する方法はありますか?それはあなたのニーズを修正するだろうか? –

答えて

6

コンポーネント宣言をFeature Moduleに入れることができます。
Feature ModuleをApp Moduleにインポートする必要があります。

あなたのコンポーネントは機能であり、別個のモジュールであるかどうかは分かりません。
私は、このモジュールのすべてがディレクティブと同じように単純ではなく明確ではないことを認識していますが、Angular2には他の方法では解決できないデザインがいくつかありました。

ドキュメント:あなたはモジュールでそれを宣言するときhttps://angular.io/guide/feature-modules

+0

ありがとう!これは私が探しているものです。 –

+0

2つの機能モジュールに同じ名前のコンポーネントが含まれているとどうなりますか? –

+0

コンポーネントが2つの異なるモジュールに存在することはありません。コンポーネントが複数回使用されている場合、共有モジュールに存在する必要があります。https://angular.io/docs/ts/latest/guide/ngmodule.html#! #shared-module – tibbus

関連する問題