要将RouteReuseStrategy中的逻辑暴露给某些组件,可以使用Angular的依赖注入系统来创建一个单例,该单例将RouteReuse应用于组件中。
首先,我们创建一个名为“CustomReuseStrategy”的类。该类实现了Angular提供的"RouteReuseStrategy"接口,并在其中实现了相应的逻辑。
import { RouteReuseStrategy, ActivatedRouteSnapshot, DetachedRouteHandle } from '@angular/router';
export class CustomReuseStrategy implements RouteReuseStrategy { shouldDetach(route: ActivatedRouteSnapshot): boolean { return false; }
store(route: ActivatedRouteSnapshot, detachedTree: DetachedRouteHandle): void {}
shouldAttach(route: ActivatedRouteSnapshot): boolean {
return false;
}
retrieve(route: ActivatedRouteSnapshot): DetachedRouteHandle | null {
return null;
}
shouldReuseRoute(future: ActivatedRouteSnapshot, curr: ActivatedRouteSnapshot): boolean {
return false;
}
}
接下来,在AppModule(或者你希望的任何其他模块)中注册这个类的提供程序。
import { NgModule } from '@angular/core'; import { RouteReuseStrategy } from '@angular/router'; import { CustomReuseStrategy } from './custom-reuse-strategy';
@NgModule({ providers: [ { provide: RouteReuseStrategy, useClass: CustomReuseStrategy } ] }) export class AppModule {}
最后,在你的那些需要使用RouteReuse的组件中注入“RouteReuseStrategy”并将它设置为成员变量。
import { Component } from '@angular/core'; import { RouteReuseStrategy } from '@angular/router';
@Component({ selector: 'my-component', templateUrl: './my-component.component.html', styleUrls: ['./my-component.component.css'] }) export class MyComponent { constructor(private routeReuseStrategy: RouteReuseStrategy) { // 设置适当的RouteReuse策略 } }
现在,当你使用“this.routeReuseStrategy”来获取你的RouteReuse策略实例时,你将能够在组件中使用该策略实