多解決了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