2016-09-23 37 views
4

試圖修改soultion from here。 它工作正常,但如果您將模板更改爲組件中的templateUrl,則應該動態加載,您會收到錯誤消息:「沒有提供ResourceLoader實現,無法讀取url ...」。帶有templateUrl的angular2動態組件的「無法讀取url」錯誤

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

plunker上的示例。任何想法如何解決這一問題?

+1

你有沒有遇到過這種情況?我面臨同樣的問題。 –

+0

您可能正在使用'COMPILER_PROVIDERS',它有一行:'{provide:ResourceLoader,useValue:_NO_RESOURCE_LOADER}'。 [來源](https://github.com/angular/angular/blob/master/modules/@angular/compiler/src/compiler.ts#L58) – cy3er

+1

@FergalMoran請參閱下面的答案。 – Max

回答

3

請勿使用COMPILER_PROVIDERS,因爲它會覆蓋ResourceLoader

對於動態加載使用Compiler從核心包(這實際上是一樣的RuntimeCompiler):

@Inject(Compiler) protected compiler: Compiler 

,並添加ApplicationModule作爲導入模塊:

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

Plunker

+0

謝謝,它的工作原理。我通過實現自定義資源加載器並像這樣覆蓋_NO_RESOURCE_LOADER解決了這個問題 - > providers:[COMPILER_PROVIDERS,{provide:ResourceLoader,useValue:CustomResourceLoader}],但你的解決方案顯然更合適。 – Max

+0

這不適合我,你能幫我解決這個問題嗎,你如何解決它? –

+1

如何定義「CustomResourceLoader」? –

相關問題