J'ai essayé de trouver une solution pour cela partout.Composant angulaire 2/4 avec gabarit dynamique ou templateUrl
J'ai un projet avec différents «skins», qui sont fondamentalement différents ensembles de templates/Css. J'essaye d'avoir mes composants utilisent l'habillage basé sur une variable THEME_DIR.
Malheureusement, je n'arrive pas à trouver comment cela se passe. J'ai regardé dans le Dynamic Component Loader sur angular.io sans succès.
J'ai également regardé quelques réponses ici sans succès non plus.
Est-ce que quelqu'un a une idée?
C'est ce que j'ai essayé jusqu'à présent:
import { ComponentFactoryResolver, ViewContainerRef } from '@angular/core';
// @Component({
// templateUrl: '../../assets/theme/'+THEME_DIR+'/login.template.html',
// })
export class LoginComponent implements, AfterViewInit {
private log = Log.create('LoginPage');
constructor(private mzksLsRequestService: MzkLsRequestService,
private componentFactoryResolver: ComponentFactoryResolver,
public viewContainerRef: ViewContainerRef) {
}
ngAfterViewInit() {
let componentFactory = this.componentFactoryResolver.resolveComponentFactory(new Component({
templateUrl: '../../assets/theme/default/login.template.html',
}));
let viewContainerRef = this.viewContainerRef;
viewContainerRef.clear();
let componentRef = viewContainerRef.createComponent(componentFactory);
}
}
Merci beaucoup pour cela. Je pense maintenant que mon problème est de se plaindre de webpack lors de la compilation des templates ... J'ai besoin de trouver un moyen de contourner ça ... – millerf
Juste essayé sur le nouveau projet Angular cli, ça marche bien avec webpack. Quel processus de construction utilisez-vous? –
J'utilise un passe-partout ionique. Il se plaint quand je mets une variable dans le chemin du template (voir THEME_DIR dans mon code) car il semble qu'il ne trouve pas le bon chemin – millerf