В моем проекте Angular 7 мне нужен файл "pages.ts", в который я экспортирую маршруты, которые будет иметь мое приложение. Они импортируются "app-routing.ts" для использования в RouterModule, а также импортируются "pages.service.ts", где я хочу управлять данными этих маршрутов. Теперь в одном из моих компонентов «test-one.component.ts» я хочу использовать этот сервис «pages.service.ts», чтобы я мог получить, например, данные маршрута по его пути или названию. Все работает правильно, но появляется это предупреждение.
ПРЕДУПРЕЖДЕНИЕ в Обнаружена циклическая зависимость: src / app / pages / test-one / test-one.component.ts -> src / app / core / services / pages.service.ts -> src / app / core / constants / pages.ts -> src / app / pages / test-one / test-one.component.ts
" pages.ts "
import { Page } from '../../core/models/page.model';
import { LoginComponent } from '../../pages/login/login.component';
import { SignupComponent } from '../../pages/signup/signup.component';
export const routePages: Page[] = [
{
path: '',
redirectTo: 'login',
pathMatch: 'full'
},
{
path: 'login',
component: LoginComponent,
canActivate: [],
data: {
title: 'Login',
description: '',
keywords: '',
icon: 'fingerprint',
hasBreadcrumb: true
},
pathMatch: 'full'
},
{
path: 'sign-up',
component: SignupComponent,
canActivate: [],
data: {
title: 'Sign up',
description: '',
keywords: '',
hasBreadcrumb: true
},
pathMatch: 'full'
}
];
" app-routing.module.ts "
import { routePages } from './core/constants/pages';
import { NgModule } from '@angular/core';
import { RouterModule } from '@angular/router';
@NgModule({
imports: [RouterModule.forRoot(routePages, { scrollPositionRestoration: 'enabled' })],
exports: [RouterModule]
})
export class AppRoutingModule { }
" pages.service.ts "
import { routePages } from './../constants/pages';
import { Page, PageData } from './../models/page.model';
import { Router } from '@angular/router';
import { Injectable, EventEmitter } from '@angular/core';
@Injectable({
providedIn: 'root'
})
export class PagesService {
pages = routePages;
private pagesChanged: EventEmitter<Page[]> = new EventEmitter<Page[]>();
constructor(private location: Location, private router: Router) {
this.setPagesFullPath();
console.log(this.pages);
}
.
.
.
}
"test-one.component.ts"
import { Page, PageData } from './../../core/models/page.model';
import { PagesService } from './../../core/services/pages.service';
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'app-test-one',
templateUrl: './test-one.component.html',
styleUrls: ['./test-one.component.scss']
})
export class TestOneComponent implements OnInit {
testATwoPage: Page;
constructor(private pagesService: PagesService) {
}
ngOnInit() {
this.testATwoPage = this.pagesService.getPageByTitle('Test A two');
}
}
Мне бы хотелось узнать, как можно разрешить эту циклическую зависимость без необходимость обходиться без каких-либо функций.
Заранее спасибо!