Riv*_*diz 3 typescript angular2-routing angular
我已经设置了一个plnkr来演示我想要问的问题
我在网络应用程序中有一些组件,
父组件, App
@Component({
selector: 'my-app',
providers: [],
template: `
<div class="main-container">
<h2>This is the base. This div must be seen on app pages</h2>
<a [routerLink]="['Home']"> Home </a> |
<a [routerLink]="['Users']"> Users </a> |
<a [routerLink]="['Contact']"> Contact </a>
</div>
<router-outlet></router-outlet>
`,
directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
{
path: '/',
name: 'Home',
component: HomeComponent,
useAsDefault: true
},
{
path: '/users/...',
name: 'Users',
component: UsersComponent
},
{
path: '/contact',
name: 'Contact',
component: ContactComponent
}
])
export class App {
}
Run Code Online (Sandbox Code Playgroud)
UsersComponent加载到下面显示router-outlet的路径的父控制器/users,
@Component({
selector: 'my-app',
template : `
<div *ngFor="#page of pages">
<a [routerLink]="[page.name]">
{{page.slug}}
</a>
</div>
<router-outlet></router-outlet>
`
})
@RouteConfig([
{path : '/', name: 'Main', component: MainRoute, useAsDefault: true}
])
export class UsersComponent{
/**
* some methods to configure the routes,
*/
}
Run Code Online (Sandbox Code Playgroud)
UsersComponent 为用户动态配置路由,
例如./alex,/john等等,
由于路线是从子组件,路径看起来像example.com/users/alex,example.com/users/john等等.但我想要的路径是example.com/alex和example.com/john
我还想将与每个用户关联的组件加载到父级router-outlet.在这里的例子,对router-outlet的App,这样我可以摆脱的用户列表中.
感谢您的任何帮助.
1.定义你App的RouteConfig样子
@RouteConfig([
{
path: '/',
name: 'Home',
component: HomeComponent,
useAsDefault: true
},
{
path: '/:user',
name: 'User',
component: PersonComponent
},
{
path: '/users',
name: 'Users',
component: UsersComponent
},
{
path: '/contact',
name: 'Contact',
component: ContactComponent
}
])
Run Code Online (Sandbox Code Playgroud)
2.取出router.config并<router-outlet>从UsersComponent
不要发送用户数据,RouteData因为您必须提前为每个用户定义路由,这不是必需/有效的.
@Component({
selector: 'my-app',
template : `
<div *ngFor="#page of pages">
<a [routerLink]="['User', {user: page.name}]">
{{page.slug}}
</a>
</div>
`,
providers : [PagesService]
})
export class UsersComponent{
pages = [];
constructor(private pgSvc: PagesService, router: Router) {
}
}
Run Code Online (Sandbox Code Playgroud)
3.构建服务以为特定用户发送数据
4.更新您PersonComponent的容纳这些更改.
@Component({
selector : 'person',
template : `
<div class="person-container">
<h3>Person selected : <strong> {{data.get['user']}} </strong></h3>
</div>
`
})
class PersonComponent {
constructor(public data: RouteParams) {
// call your service here to get the user specific data by using
let userName = data.get('user');
// yourService.getUserData(userName);
}
routerCanReuse(next, prev) {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2796 次 |
| 最近记录: |