Dynamically load different css files in angular2 application based on user's language

后端 未结 4 636
傲寒
傲寒 2021-01-11 18:42

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

4条回答
  •  旧时难觅i
    2021-01-11 19:04

    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();
        }
    
    }
    

提交回复
热议问题