Max Max - 2 months ago 193
TypeScript Question

"Can't read the url" error for angular2 dynamic components with templateUrl

Tried to modify soultion from here.
It works fine, but if you change template to templateUrl in component, that should load dynamically, you get an error: "No ResourceLoader implementation has been provided. Can't read the url ...".

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


Live example on plunker. Any ideas how to fix this?

Answer

Don't use COMPILER_PROVIDERS, because it overrides the ResourceLoader.

For dynamic loading use the Compiler from core package (which is actually the same as RuntimeCompiler):

@Inject(Compiler) protected compiler: Compiler

and add the ApplicationModule as import in your module:

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

Plunker