2016-12-06 62 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