2017-07-04 32 views
0

如果只有該路由器上的參數發生更改,是否有任何方法可以防止路由器上的問題解決?如何防止在angular2路由器中解析?

例如,我有這個路由配置。

{path:'home/:status', component:HomeComponent,pathMatch:'full',resolve:{ actionList : HomeActionListResolve}} 

resolve這裏返回完整的數據集和組分只是需要篩選基於status等(活性,完成等)參數的數據。

我想要實現的是,如果用戶第一次登陸此URL,那麼應該調用resolve,以便它可以獲取數據。

但是,如果用戶只更改status,那麼即使被調用,也不應調用resolve或OR,那麼它不應該使HTTP請求一次又一次地獲取相同的數據。

有人可以請建議一種方法來實現這一目標嗎?

感謝您的幫助提前。

+0

你是否將狀態信息保存在服務的某個地方 –

+0

@RahulSingh,不,我不存儲。它將被附加到URL本身中,組件將檢索它並將其設置爲使用的屬性。 –

回答

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

    url: string[]; 

    constructor() { 

    } 

    resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<any>|Promise<any>|any { 
    // get the snapshot from activatedroutesnapshot 
    let urlStatus= route.url[0].path; 
    or 
    let urlStatus = state.url; 

    if(url.contains(split url to get the status){ 
     return false; 
     } else { 
     do your work call service and add the status to the URL[] in Resolve 
     } 
    } 
    } 
+0

因此,如果URL中存在狀態並且返回false,則建議不要進行HTTP調用。我對嗎 ?? –

+0

@SameerK你可以做任何你想在那裏nd每次服務調用後或在其他狀態添加到url數組 –

+0

謝謝,但是當我注入'Route'到決心,我得到以下錯誤'TS24220:class 'HomeActionListResolve'錯誤地實現了界面'Resolve '。財產'決心'的類型是不相容的。類型'(route:ActivatedRouteSnapshot,state:RouterStateSnapshot,router:Route)=>任何'不可分配給類型'(route:ActivatedRouteSnapshot,state:RouterStateSnapshot)=> any'.' –