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
}]})
我有一个 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
}]})