Здесь есть несколько неправильных вещей.
1- router
из RouteParamsService
всегда будет undefined
, поскольку оно нигде не назначается.Для правильного ввода необходимо ввести значение constructor
в onder.
constructor(public router : ActivatedRoute){};
2- private route = new RouteParamsService();
не создает службу Angular.Чтобы внедрить ActivatedRoute
в конструктор службы, либо это должен быть сервис Angular (инъецируемый), либо вы должны сделать это вручную.Таким образом, если вы создаете сервис с помощью new
, вам нужно передать ActivatedRoute
для обслуживания вручную.
Вы можете использовать Injector
(https://angular.io/api/core/Injector), чтобы вручную вводить инъекционные формы в свои пользовательские классы.
ОБНОВЛЕНИЕ
Чтобы внедрить Angular, вводимый в пользовательский класс, вы можете использовать Injector
.
Сначала экспортируйте экземплярInjector
из функционального модуля (во избежание циклических зависимостей) и импортируйте функциональный модуль в модуль приложения
export let InjectorInstance: Injector;
@NgModule(
/* *** */
)
export class MyFeatureModule {
constructor(private injector: Injector) {
InjectorInstance = this.injector;
}
}
-----
@NgModule(
imports: [
...,
MyFeatureModule,
...
]
)
export class AppModule {}
Затем в свой пользовательский класс импортируйте InjectorInstance
из функционального модуля и используйтечтобы получить инъекционную справку:
import {InjectorInstance} from 'path/to/my-feature-module.module';
export class CheckGroupsFilterValues {
private route = InjectorInstance.get<RouteParamsService>(RouteParamsService);
};
И не забудьте предоставить свои услуги в root
@Injectable({
providedIn: 'root'
})
export class RouteParamsService {...}