2016-05-25 16 views
3

2つのコンポーネントが同じセレクタを使用する次のような状況をどう対処しますか?同じセレクタを使用する角度2の複数のコンポーネント

app.ts

import { Component } from '@angular/core'; 
import { Person as Person1 } from './person1'; 
import { Person as Person2 } from './person2'; 
@Component({ 
    selector: 'app', 
    template: '<person1???></person1><person2???></person2>', 
    directives: [Person1, Person2] 
}) 
export class App { 

} 

person1.ts

import { Component } from '@angular/core'; 
@Component({ 
    selector: 'person', 
    template: '<h1>Person 1</h1>' 
}) 
export class Person { 

} 

person2.ts

import { Component } from '@angular/core'; 
@Component({ 
    selector: 'person', 
    template: '<h1>Person 2</h1>' 
}) 
export class Person { 

} 

これではありません:(混乱を避けるために、単語 "コンポーネント" を削除)あなたがちょうど<Person1 /><Person2 />

を使用しているので、リアクションの問題ギュンターZöchbauerに基づいて
+0

を使用すると、セレクタを使用する理由:両方のケースで「人を」?この要素() –

+1

を持っていないので動作しません。http://stackoverflow.com/questions/36325212のように、 'ViewContainerRef.createComponent()'を使用して、同じセレクタで2つの要素を必須に追加できます/ angle-2-dynamic-tabs-with-user-click-selected-components/36325468#36325468それぞれの ''コンポーネントを別のラッパーコンポーネントにラップすると、宣言的にそれらを追加することもできます。 –

答えて

1

は、あなたがこれを実現し、コンポーネントをラップする定型の束を追加することができますコメント

app.ts

import { Component } from '@angular/core'; 
import { Person as Person1 } from './person1'; 
import { Person as Person2 } from './person2'; 

@Component({ 
    selector: 'person1', 
    template: '<person></person>', 
    directives: [Person1] 
}) 
export class Person1Wrapper { 

} 

@Component({ 
    selector: 'person2', 
    template: '<person></person>', 
    directives: [Person2] 
}) 
export class Person2Wrapper { 

} 

@Component({ 
    selector: 'app', 
    template: '<person1></person1><person2></person2>', 
    directives: [Person1Wrapper, Person2Wrapper] 
}) 
export class App { 

} 
+0

これは './person1'から正しいですか? – Demodave

+0

ディレクティブはサポートされなくなりました。 –

関連する問題