可以達到預期的效果,而不使用UrlResolver
改變templateUrl
在你的代碼庫,可用自2.0.0-alpha.36。
import {UrlResolver} from '@angular/compiler';
import {NgModule} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import {platformBrowserDynamic} from '@angular/platform-browser-dynamic';
let MyApp: any;
@NgModule({
imports: [BrowserModule],
providers: [{provide: UrlResolver, useValue: new UrlResolver("http://localhost/app")}],
bootstrap: [MyApp]
})
class AppModule {
}
export function main() {
platformBrowserDynamic().bootstrapModule(AppModule);
}
這將引導與UrlResolver
一個自定義實例具有您指定一個基本URL您的應用程序。你甚至可以更好地控制通過擴展UrlResolver類解決路徑:
class MyUrlResolver extends UrlResolver {
resolve(baseUrl: string, url: string): string {
// Serve CSS files from a special CDN.
if (url.substr(-4) === '.css') {
return super.resolve('http://cdn.myapp.com/css/', url);
}
return super.resolve(baseUrl, url);
}
}
@NgModule({
imports: [BrowserModule],
providers: [{provide: UrlResolver, useClass: MyUrlResolver}],
bootstrap: [MyApp]
})
...
(source)
注:這個工作,你很可能需要在你的組件提供moduleId: module.id,
使用component-relative paths定義,例如:
@Component({
moduleId: module.id, // use component-relative paths
selector: 'dialogs',
templateUrl: './dialogs.html',
})
是不是:'AppTemplateConstants.BASE_TEMPLATE_PATH',@Adrien? :-) –
嗯,你是對的...... :)我編輯了我的答案來解決這個錯誤。感謝您的通知。 – AdrienTorris
似乎不工作: 錯誤:類型錯誤:未定義無法讀取屬性「BASE_TEMPLATE_PATH」(...) 我在出口試過的console.log,我可以看到字符串,而不是在@Component – Stephen