2016-05-25 104 views
3

如何處理以下情況,其中兩個組件使用相同的選擇器? (刪除單詞 「組件」,以避免混亂):具有相同選擇器的角度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 { 

} 

這不是React問題,因爲您只需使用<Person1 /><Person2 />

+0

爲什麼你用選擇?它不會工作,因爲你沒有這個元素() –

+1

你可以使用'ViewContainerRef.createComponent()'作爲命令在同一選擇器中添加兩個元素,如http://stackoverflow.com/questions/36325212/angular-2-dynamic-tabs-with-user-click-chosen-components/36325468#36325468如果你將每個''組件包裝在不同的包裝器組件中,你也可以聲明性地添加它們。 –

回答

1

基於岡特Zöchbauer評論,你可以添加一堆樣板來完成這一點,包裝的組件:在這兩種情況下,「人」:

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

指令不再受支持。 –

相關問題