Вы можете создать фабричный сервис, который обрабатывает создание NavigationItem
s и связывает их с Router
. Вот пример того, как может выглядеть класс NavigationItemFactory
:
// imports
@Injectable({ providedIn: 'root' })
export class NavigationItemFactory {
constructor(private router: Router) { }
createItem(): NavigationItem {
return new NavigationItem(this.router);
}
}
Поскольку здесь используется функция providedIn
Angular 6+, вам не нужно объявлять этот фабричный класс в модуле, что делает его легко перемещаемым между проектами.
Везде, где вы хотите создать эти элементы в вашем проекте, просто возьмите зависимость от NavigationItemFactory
и соответственно используйте ее функцию createItem
. Конечно, это все еще зависимость, которая вам понадобится в вашем проекте, но, по крайней мере, теперь это зависимость от вашего собственного типа, а не от Router
.