2016-03-28 10 views
12

私はapp.component.tsファイルのAngular 2クイックスタートコードから作業しています。予想通り角2同じページに複数のコンポーネントがあります

import {Component} from 'angular2/core'; 

@Component({ 
    selector: 'app', 
    template: `<h1>Title Here</h1>' 
}) 
export class AppComponent { } 

これは動作します:

ファイルには、次のようになります。私が何か間違ったことをやっていることを

import {Component} from 'angular2/core'; 
import {ComponentTwo} from 'angular2/core'; 

@Component({ 
    selector: 'app', 
    template: `<h1>Title Here</h1>' 
}), 

@Component({ 
    selector: 'appTwo', 
    template: `<h1>Another Title Here</h1>' 
}) 
export class AppComponent { } 

これは動作しません...それはです:

は、私は何をしたいので、私はこれを試してみました...この同じページに別のコンポーネントを追加することですまたはこれは許可されていませんか?

答えて

19

あなたのページに同じセレクタを持つルートコンポーネントを2つ持つことはできません。同じクラスに2つの@Component()デコレータを持つこともできません。

あなたのコンポーネントが異なるセレクタを持っている場合は、単に各ルートコンポーネントのためのブートストラップ実行コンポーネントを複数回
ルートを追加できるようにセレクタをオーバーライドサポートするための未解決の問題があり

@Component({ 
    selector: 'app', 
    template: '<h1>AppComponent1</h1>' 
}) 
export class AppComponent1 { } 

@Component({ 
    selector: 'appTwo', 
    template: '<h1>AppComponent2</h1>' 
}) 
export class AppComponent2 { } 


bootstrap(AppComponent1) 
bootstrap(AppComponent2) 

からhttps://github.com/angular/angular/issues/915

は、
+0

通常angular2のHTMLページです/角度/問題/ 915?セレクタのオーバーライドの利点は何ですか? – shiv

+0

同じルートコンポーネントを複数回追加することはできますが、それでも同じセレクタには適用できません。 –

+0

複数のブートストラップされた 'root'コンポーネントを持つ利点や理由はありますか? @GünterZöchbauer –

3

2つのコンポーネントデコレータ(@Component)を持つコンポーネントは使用できません。あなたはこのために2つの異なるクラスを作成する必要があります。

@Component({ 
    selector: 'app', 
    template: `<h1>Title Here</h1>` 
}) 
export class AppComponent { } 

@Component({ 
    selector: 'appTwo', 
    template: `<h1>Another Title Here</h1>` 
}) 
export class AppComponent1 { } 

その後、あなたはギュンターの答えからのアプローチを使用することができます...

-2

のiFrameで同じことを行うことができ包みなさい、これは、誰にも便利です。あなたがここに見ることができるのサンプルを作った: http://plnkr.co/edit/xWKGS6

基本的に私は

<iframe src="widget.html" width="500" height="400" style="border:none; background-color:#ccc"> 
    </iframe> 

にウィジェットをウィジェットのHTMLをロードするためのiframeを使用してhttps://github.com/angular

+2

共有サービスを他のコンポーネントと同様に使用すると、簡単には機能しません。 –

+1

ええ、この例では、全体を通して同じコンポーネントが使用されています。ウィジェットのシナリオのように、サイト内のさまざまな場所に異なる都市が表示されているかどうかなど、アプリケーションの種類を指定します。それは、誰かがそれを複数のものにロードしたいと思う唯一の理由だと思うでしょう。 – MSwehli

+0

iframeを使うことは決してコントロールの欠如のために良い考えではありません –

関連する問題