I have 3 root components that get bootstrapped by the root AppModule
.
How do you go about specifying an @Input()
parameter to one of those components?
Neither
<app-modal [id]="'hard-coded value'"></app-modal>
<app-modal [id]="constantExportedByAppmodule"></app-modal>
are picked up by AppModalComponent
:
@Input() id: string;
It is undefined.
As far as I know, you can not pass @Input() to a bootstraped component.
But you can use another way to do that - pass the value as an attribute.
index.html :
app.component.ts :
As @Grégory Gossart said you can not pass @Input data as normal for bootstraped components.
It is because an @Input is expected to come from an angular component. So, If your root app is loaded/bootstraped directly in the HTML it has not reference of what Is gonna provide that @Input, I thought.
As good practice commented on many Angular docs, and probably because it specific behaviours, you should only bootstrap one root App. I think your option here is add a root app which you bootstrap and it imports your others(3) and use those as template in it. Then pass the @Input as normal. Really nothing special.
I think another option could be pass the data from an @Injectable to your root apps if you decide you need to bootstrap all them and need external data. But I feel it is more refered to specific purposes.
Edit: I took a time to find this blog I have read past day and reason why I said about @Injectable. So merits to the author, but interesting stuff. Providing external data when bootstrapping Angular 2