I have an Angular2 application and it need to support multiple languages. Some of these languages may be RTL (i.e Persian) and some will be LTR (i.e. English). Apart from lo
based on @marbug 's answer I would try to use a service and dynamically load and unload your "language" components.
that will work as follows
import { Injectable, ViewChild, ViewContainerRef, ComponentFactoryResolver } from '@angular/core';
import { LanguageAComponent } from "./language-a.component";
import { LanguageBComponent } from "./language-b.component";
import { Router } from '@angular/router';
@Injectable()
export class LanguageComponentService {
componentRef: any;
constructor(private componentFactoryResolver: ComponentFactoryResolver, private router: Router
) { }
loadLanguageA(viewContainerRef: ViewContainerRef) {
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(LanguageAComponent);
this.componentRef = viewContainerRef.createComponent(componentFactory);
}
loadLanguageB(viewContainerRef: ViewContainerRef) {
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(LanguageBComponent);
this.componentRef = viewContainerRef.createComponent(componentFactory);
}
unloadComponent() {
this.componentRef.destroy();
}
}