我有一個Angular應用程序,我想使用自定義的UrlResolver提供程序來添加一些緩存中斷邏輯,如在此問題(https://stackoverflow.com/a/43289767/868914)中所見。Angular UrlResolver未被自定義提供者覆蓋
但是,我似乎沒有像使用提供程序那樣覆蓋默認編譯器UrlResolver,正如我通常所做的那樣,並且正如上面的鏈接所暗示的。
下面是一個plunker顯示我的意思:https://plnkr.co/edit/zFsdyfNIoPcmbLO7WafW?p=preview
如果您使用的鍍鉻(或其他好)開發工具調試器來查看源compiler.umd.js和搜索UrlResolver,把一個破發在'resolve'方法中,您可以看到正在使用默認實現,而不是我提供的類。
我找不到原因,希望這裏有人知道一個理由/解決方案?
繼承人app.module代碼(如看到的plunkr也)
//our root app component
import {Component, NgModule, VERSION} from '@angular/core';
import {BrowserModule} from '@angular/platform-browser';
import { UrlResolver } from "@angular/compiler";
@Component({
selector: 'my-app',
templateUrl: 'my-app.html',
})
export class App {
name:string;
constructor() {
this.name = `Angular! v${VERSION.full}`
}
}
class NewUrlResolver extends UrlResolver {
resolve(baseUrl: string, url: string): string {
console.log("Custom resolve");
return "rubbish";
}
}
@NgModule({
imports: [ BrowserModule ],
providers: [{
provide: UrlResolver, useClass: NewUrlResolver
}]
declarations: [ App ],
bootstrap: [ App ]
})
export class AppModule {}
謝謝Yurzui,我可以從Plunker看到,這正是我試圖去做。不幸的是,該文檔中的文檔非常薄弱! –