docs(routes): new docs for sidebar, new page and project structure

This commit is contained in:
nixa 2016-07-12 13:49:07 +03:00
parent 7152220b90
commit 6a7f51c904
4 changed files with 118 additions and 45 deletions

View file

@ -6,24 +6,23 @@ group: Customization
template: article.jade
---
ng2-admin uses [Angular Router](https://angular.io/docs/ts/latest/guide/router-deprecated.html) for navigation.
Currently this version of the router is deprecated and we are going to move on to a new version once it's stable.
ng2-admin uses [Angular 2 Component Router](https://angular.io/docs/ts/latest/guide/router.html) for navigation.
We strongly recommend to follow pages structure in your application.
If it doesn't fit your needs please create a GitHub issue and tell us why. We would be glad to discuss.
We strongly recommend to follow pages structure in your application.
If it does not fit your needs please create a GitHub issue and tell us why. We would be glad to discuss.
Basically any page is just a usual Angular 2 Component with some routes defined for it.
Basically any page is just a common Angular 2 Component with a route defined for it.
## Page creation example
1) Let's assume we want to create a blank page with title 'My New Page'
1) Let's assume we want to create a blank page with a title 'My New Page'
<br><br>
2) Let's Create a new directory to contain our new page inside of `src/app/pages`. Let's call this directory `new`.
2) Let's Create a new directory for our new page inside of `src/app/pages`. Let's call the directory `new`.
<br><br>
3) Then let's create blank angular component to contain our page called 'new.component.module.js' inside of `src/app/pages/new`:
3) Then let's create a blank angular 2 component for our page called 'new.component.ts' inside of `src/app/pages/new`:
```javascript
import {Component} from '@angular/core';
@ -44,21 +43,57 @@ export class New {
This will create a simple Angular 2 component, for more detail please check out [official Angular 2 documentation](https://angular.io/docs/ts/latest/guide/displaying-data.html).
<br><br>
4) Last thing we need to do is to define a Router configuration in a parent component, in our case in Pages component `src/app/pages/pages.component.ts`:
4) Last thing we need to do is to define a Router configuration. Routes for pages are located inside of `src/app/pages/pages.routes.ts`.
Typically all pages are children for `/pages` routes and defined under `children` property of root `pages` route like this:
```javascript
@RouteConfig([
// ... some routes here
// imports here
// lets import our page
import {New} from './new/new.component';
//noinspection TypeScriptValidateTypes
export const PagesRoutes:RouterConfig = [
{
name: 'New',
component: New,
path: '/new',
path: 'pages',
component: Pages,
children: [
{
path: 'new', // path for our page
component: New, // component imported above
data: { // custom menu declaration
menu: {
title: 'New Page', // menu title
icon: 'ion-android-home', // menu icon
selected: false,
expanded: false,
order: 0
}
}
},
{
path: 'dashboard',
component: Dashboard,
data: {
menu: {
title: 'Dashboard',
icon: 'ion-android-home',
selected: false,
expanded: false,
order: 0
}
}
}
// rest of the routes
]
}
])
export class Pages {
}
];
```
<br><br>
And that's it! now your page should be available by the following url [http://localhost:3000/#/pages/new](http://localhost:3000/#/pages/new).
If you want to add a link to your page into Sidebar, please look at the [following article](/ng2-admin/articles/015-sidebar/).
And that's it! Now your page is available by the following url [http://localhost:3000/#/pages/new](http://localhost:3000/#/pages/new).
Plus, your page is automatically registered inside the sidebar menu. If you don't want to have a link in the menu - just remove the `menu` declaration under `data` property.