2016-09-23 5 views
4

Versucht, SoLtion from here zu ändern. Es funktioniert gut, aber wenn Sie Vorlage zu TemplateUrl in Komponente ändern, die dynamisch geladen werden sollte, erhalten Sie einen Fehler: "No ResourceLoader Implementierung wurde zur Verfügung gestellt. Kann die URL nicht lesen ...".Fehler "Kann die URL nicht lesen" für dynamische Komponenten von angular2 mit templateUrl

@Component({ 
    selector: 'string-editor', 
    templateUrl: 'app/parts/string.html', //using template URL instead of inline template here 
}) 
export class StringEditor { ... } 

Live Beispiel auf plunker. Irgendwelche Ideen, wie das zu beheben ist?

+1

Haben Sie damit irgendwo was erreicht? Ich stehe vor demselben Problem. –

+0

Sie verwenden wahrscheinlich 'COMPILER_PROVIDERS' mit einer Zeile:' {provide: ResourceLoader, useValue: _NO_RESOURCE_LOADER} '. [Quelle] (https://github.com/angular/angular/blob/master/modules/@angular/compiler/src/compiler.ts#L58) – cy3er

+1

@FergalMoran siehe die Antwort unten. – Max

Antwort

3

Verwenden Sie nicht COMPILER_PROVIDERS, weil es die ResourceLoader überschreibt.

Für dynamische Laden Verwendung der Compiler aus Kernpaket (die eigentlich die gleiche wie RuntimeCompiler ist):

@Inject(Compiler) protected compiler: Compiler 

und fügen Sie das ApplicationModule als Import in das Modul:

imports: [ 
    ApplicationModule, 
    BrowserModule, 
    DynamicModule.forRoot() // singletons 
], 

Plunker

+0

Danke, es funktioniert. Ich löste das, indem ich kundenspezifischen Ressourcenlader implementierte und _NO_RESOURCE_LOADER wie folgt überschrieb -> Anbieter: [COMPILER_PROVIDERS, {stellen Sie: ResourceLoader, useValue: CustomResourceLoader} zur Verfügung, aber Ihre Lösung offensichtlich angemessener. – Max

+0

Es funktioniert nicht für mich, kannst du mir bitte in diesem Fall helfen, wie du es gelöst hast? –

+1

Wie definiert man "CustomResourceLoader"? –

Verwandte Themen