2017-07-07 28 views
1

我有2組角的解析器工作一個接一個。 1如何使用通數據從一個解析器其它

@Injectable() 
export class ChainViewResolver implements Resolve<any> { 

    constructor(private a: AService) { 
    } 

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 
     return this.a.getSome(route.params['id']); 
    } 
} 

和第二,

@Injectable() 
export class DocViewResolver implements Resolve<any> { 

    constructor(private a: AService) { 
    } 

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 

    return this.a.getSome(state.url.split('/')[state.url.split('/').indexOf('id') + 1]).flatMap((chain) => { 
     return this.a.getSomeAnotherData(route.params['id2']).flatMap(result => { 

     }); 
    }); 
} 
} 

網址看起來像:

/parent_component /:ID/children_component /:ID

,其中第一個解析器爲parent_component,併爲第二解析器children_component

1)方法getSome它的重型請求,我不想使用它的2倍,當我的解析器一起工作。

2)我不想把它寫一些變量或本地存儲,因爲getSome返回的數據經常變化,當我用1號變壓器內部消除第二,我可能會因爲這個

問題如何能我把我的數據從第一個解析器傳給第二個?

回答

0

至於結果,我使用服務命名TmpService從一個解析器將數據傳遞給其他的,它的工作,但我穿上噸這樣的這一決定。

1

如果你有像第1父路由聲明:

resolve: { 
    parentValue: ChainViewResolver 
} 

你可能會得到它的孩子DocViewResolver,如:

resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any> { 

    let parentValue = route.parent.data.parentValue; // <-- here 

    return ... 
} 
相關問題