Ok, by now I have to create a body for an e-mail.
I need to take a template, interpolate it with the data I already have (js Object) and have this resulted html string in a variable, so I can send this body to a server that will actually send the e-mail.
I am not sure about using other template engine, handlebars for instance, to generate this html.
Is there a way to use the angular 2 template engine? Keep in mind that I dont need to show it, I want to keep it in memory only.
If I cant use it what should I use? Is there any best known or recomended aprouch?
Not sure why you need it but here is some ideas:
import {Component, NgModule, Input, VERSION, ChangeDetectorRef} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'
import {Injectable, ComponentFactoryResolver, ApplicationRef, Injector} from '@angular/core';
@Component({
selector:'my-cmp',
template: 'here is {{title}}'
})
export class MyComponent {
@Input() title: string;
}
@Component({
selector: 'my-app',
template: `
<input #inp>
<button (click)="create(inp.value)">Create</button>
`,
})
export class App {
constructor(private componentFactoryResolver: ComponentFactoryResolver,
private appRef: ApplicationRef,
private injector: Injector) {
}
create(title) {
let factory = this.componentFactoryResolver.resolveComponentFactory(MyComponent);
let ref = factory.create(this.injector);
ref.instance.title = title;
this.appRef.attachView(ref.hostView);
console.log(ref.location.nativeElement);
this.appRef.detachView(ref.hostView);
}
}
@NgModule({
imports: [ BrowserModule ],
declarations: [ App , MyComponent],
entryComponents: [MyComponent],
bootstrap: [ App ]
})
export class AppModule {}