Angular UrlResolver 未被自定义提供程序覆盖

Angular UrlResolver is not overridden by custom provider

我有一个 Angular 应用程序,我想在其中使用自定义 UrlResolver 提供程序以添加一些缓存中断逻辑,如这个问题 () 中所示。

然而,我似乎无法使用提供程序覆盖默认编译器 UrlResolver,就像我通常会做的那样以及上面 link 建议的那样。

这里有一个 plunker 显示了我的意思:https://plnkr.co/edit/zFsdyfNIoPcmbLO7WafW?p=preview

如果您使用 chrome(或其他好的)开发工具调试器查看 compiler.umd.js 的源代码并搜索 UrlResolver 并中断 'resolve' 方法,您可以看到正在使用默认实现,而不是我提供的 class.

我找不到原因,希望这里有人知道原因/解决方案吗?

这里是 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 {}

在引导应用程序时,您应该在 CompilerOptions 中提供自定义 UrlResolver 作为 providers 的一部分:

platformBrowserDynamic().bootstrapModule(AppModule, { 
  providers: [{ provide: UrlResolver, useClass: NewUrlResolver 
}]})

Plunker Example