Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 是否可以扩展角服务,如路由器?_Angular - Fatal编程技术网

Angular 是否可以扩展角服务,如路由器?

Angular 是否可以扩展角服务,如路由器?,angular,Angular,我想为一些角度服务(角度路由器)添加一些功能 有可能扩展角度路由器吗 @Injectable({ providedIn: 'root' }) export class InfipRouter extends Router { constructor(rootComponentType: Type<any> | null, urlSerializer: UrlSerializer, rootContexts: ChildrenOutletContexts, locat

我想为一些角度服务(角度路由器)添加一些功能

有可能扩展角度路由器吗

@Injectable({
    providedIn: 'root'
})
export class InfipRouter extends Router {

    constructor(rootComponentType: Type<any> | null, urlSerializer: UrlSerializer, rootContexts: ChildrenOutletContexts, location: Location, injector: Injector, loader: NgModuleFactoryLoader, compiler: Compiler, config: Routes) {

        super(rootComponentType, urlSerializer, rootContexts, location, injector, loader, compiler, config);
    }
}
@可注入({
providedIn:'根'
})
导出类InfipOuter扩展路由器{
构造函数(rootComponentType:Type | null,urlSerializer:urlSerializer,rootContexts:ChildrenOutletContexts,位置:位置,注入器:注入器,加载器:NgModuleFactoryLoader,编译器:编译器,配置:路由){
超级(rootComponentType、urlSerializer、rootContext、位置、注入器、装入器、编译器、配置);
}
}
我已经添加了这个,我不断地得到错误。 问题是,是否有可能扩展这样的服务并继续使用角度依赖注入,如果有,怎么做


这种继承的最佳实践是什么?

为什么需要这种类型的扩展?你想要实现什么?最后一个
config
依赖项可能会出现问题-它是通过
forRoot
/
forChild
方法初始化的,因此您应该将该行为复制到我希望向服务添加更多功能,并使用其他常规方法,而不使用其他服务,我想使用常规的依赖注入,就像我在路由器上使用的一样,但对于我的扩展路由器,你可以使用“组合”而不是“继承”——只需创建另一个服务,对路由器执行一些自定义逻辑,并将其称为
CustomRouter
,然后将其注入到你想要的地方。在所有其他地方,只需注入一个常规的路由。这就是我所做的,我使用了“合成”,效果非常好!我已经在应用程序初始值设定项中向服务添加了所需的功能。为什么需要这种类型的扩展?你想要实现什么?最后一个
config
依赖项可能会出现问题-它是通过
forRoot
/
forChild
方法初始化的,因此您应该将该行为复制到我希望向服务添加更多功能,并使用其他常规方法,而不使用其他服务,我想使用常规的依赖注入,就像我在路由器上使用的一样,但对于我的扩展路由器,你可以使用“组合”而不是“继承”——只需创建另一个服务,对路由器执行一些自定义逻辑,并将其称为
CustomRouter
,然后将其注入到你想要的地方。在所有其他地方,只需注入一个常规的路由。这就是我所做的,我使用了“合成”,效果非常好!我已在应用程序初始值设定项中将所需的功能添加到服务中。