Reputation: 49364
I am working from the Angular 2 quick start code on app.component.ts file.
The file looks like this:
import {Component} from 'angular2/core';
@Component({
selector: 'app',
template: `<h1>Title Here</h1>'
})
export class AppComponent { }
This works as expected.
What I want to do is to add another component on this same page ... so I tried this:
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 { }
This doesn't work...Is it that I'm doing something wrong or is this not allowed?
Upvotes: 14
Views: 39894
Reputation: 202138
You can't have a component with two component decorators (@Component). You need to create two different classes for this:
@Component({
selector: 'app',
template: `<h1>Title Here</h1>`
})
export class AppComponent { }
@Component({
selector: 'appTwo',
template: `<h1>Another Title Here</h1>`
})
export class AppComponent1 { }
Then you can use the approach from the Gunter's answer...
Upvotes: 3
Reputation: 657068
You can't have two root components with the same selector in your page, you also can't have two @Component()
decorators on the same class.
If your components have different selectors, just run bootstrap for each root 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)
There is an open issue to support overriding the selector to be able to add a root component multiple times
- https://github.com/angular/angular/issues/915
Upvotes: 20