2016-12-06 55 views
0

我知道,要實現解決後衛解決界面,我們做這樣的事如何實現angular2

class PostsResolveGuard implements Resolve<somethingInsideHere>{ 
    resolve(): boolean { 
    if(data is present) 
     return true; 
    else 
     return false; 
    } 
} 

而下面是我的路線,其採用上面後衛

{ 
    path: ':id', 
    component: SomeComponent, 
    resolve: { 
     isDataPresent: PostsResolveGuard 
    } 
} 

有啥實際上我們必須替換somethingInsideHere。 這取決於我是否根據Resolve<true>Resolve<false>更改它。在這種情況下路線如何解決。 無論我們在這種情況下指定什麼,路線總是解決。

+0

你混淆解析和警衛。他們不是一回事。在某些情況下,防護用於防止路由器轉到路由。解決方法用於向激活的組件提供數據,而不是從組件本身加載數據。 –

回答

1

這是它解析爲數據類型:

class PostsResolveGuard implements Resolve<boolean>{ 
0
Resolve<any> 

,如果你想返回數據,而不是布爾值,你可以在打字稿以此爲safeside

+0

我會建議總是使用嚴格的類型,而不是隱式的「任何」。如果你想返回數據(對象/數組)' – LordTribual

+0

'我上面提到的原因@Chandra Shekhar在他的代碼中使用'if(data is present)' – anshuVersatile

+0

但是你仍然可以實現一個接口或者類(模型)那個數據,對吧? – LordTribual