多解决了UI的路由器其容易使在路由配置中定义多个议决,所以让我们这样说:Angular2路由器和一个路由
export const APP_STATES: Ng2StateDeclaration[] = [
{
name: 'dashboard',
url: '/dashboard',
component: DashboardComponent,
resolve: [
{
token: 'playbookDurations',
deps: [DashboardService],
resolveFn: (svc: DashboardService) => svc.getPlaybookDurations()
},
{
token: 'playbookSuccesses',
deps: [DashboardService],
resolveFn: (svc: DashboardService) => svc.getPlaybookSuccesses()
},
{
token: 'playbookRuns',
deps: [DashboardService],
resolveFn: (svc: DashboardService) => svc.getPlaybookRuns()
},
{
token: 'activityLog',
deps: [DashboardService],
resolveFn: (svc: DashboardService) => svc.getActivityLog()
}
]
}
}];
使用Angular2路由器时,是需要你为resolve参数实现解析器模式。因此,像这样:
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Injectable } from '@angular/core';
import { DashboardService } from '.';
@Injectable()
export class DashboardResolver implements Resolve<any> {
constructor(private dashboardService: DashboardService) { }
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.dashboardService.get();
}
}
然后在我的路线我做这样的事情:
import { DashboardComponent } from './dashboard.component';
import { DashboardResolver } from './dashboard.resolver';
export const routes = [
{
path: '',
children: [
{
path: '',
component: DashboardComponent,
resolve: {
data: DashboardResolver
}
}
]
}
];
问题是只有一个决心。如何实现像ui-router实现那样的多个解析参数?
我想你有2个选择;为每个输入实现解析器,或者让解析返回一个对象,其中所有解析都是嵌套的。第一个看起来很有礼貌,第二个听起来很不好,所以必须有更好的方法。
你可以在angular2 BTW中继续使用UIRouter :),我这样做。 –
是的,我知道。我只是在试验; P – amcdnl
@amcdnl。你还需要帮助吗? – AngularChef