Я пишу что-то похожее на CMS.У меня есть два приложения.Серверная часть написана на Django, а SPA написан на угловом 7. У серверной части есть представления, что list-pages
и retrieve-page
При отправке запроса на http://127.0.0.1:8000/pages-management/pages
возвращает json
с данными:
[
{
"id": 1,
"title": "some title 1",
"section": "section1",
"urlKey": "some_title_1"
},
{
"id": 2,
"title": "some title 2",
"section": "section2",
"urlKey": "some_title_2"
},
]
По запросу sendint:
http://127.0.0.1:8000/pages-management/pages/some_title_1
Возвращает:
{
"id": 1,
"title": "some_title_1",
"section": "section1",
"urlKey": "some_title_1",
"content": "<p>html content</p>"
}
Чего я хочу достичь?
Я бы хотел бытьзагрузить данные из /pages-management/pages
при запуске углового приложения и данные для создания маршрутов из него.
В первой попытке я попытался добавить эти маршруты во время инициализации компонента заголовка:
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
currentUserEmail: string;
pages: Page[];
constructor(private authService: AuthService, private pageService: PageService, private router: Router) {
}
ngOnInit() {
// TODO remove the property this.authService.currentUserEmail and export currentUserEmail from localstorage?
this.currentUserEmail = this.authService.currentUserEmail;
this.pageService.getPages().subscribe(data => {
this.pages = data;
const data = this.router.config.filter(value => value.path === 'children')[0].children;
this.pages.forEach(item => {
data.push({path: item.urlKey, component: PageComponent});
});
}, error1 => {
});
}
}
<div class="nav-item mr-2">
<div class="row">
<div class="col">
<div ngbDropdown class="d-inline-block">
<button class="btn btn-light" id="studentZoneDropDown" ngbDropdownToggle>
Strefa Studenta
</button>
<div ngbDropdownMenu aria-labelledby="dropdownBasic1">
<button class="dropdown-item" [routerLink]="['strefa-studenta', page.urlKey]"
*ngFor="let page of pages">{{page.title}}</button>
</div>
</div>
</div>
</div>
</div>
Это почти работает, когда я позволяю приложению загружаться и вводить URL через ссылку в моей навигациибар.Проблема в том, что когда я пытаюсь ввести URL-адрес напрямую через браузер, ссылка http://localhost:4200/children/some_title_1
не работает.Но переход от http://localhost:4200
к http://localhost:4200/children/some_title_1
по ссылке в навигационной панели возможен.
Вопрос в том, как достичь этой цели?