【发布时间】:2017-07-14 00:38:52
【问题描述】:
我在新的 Angular 2 路由器中看到了这些新事件。
有 NavigationStart、NavigationEnd、NavigationFailed(或类似的东西)
有人知道如何使用这些吗?我搞砸了一些事情,但无法让他们做任何事情。
【问题讨论】:
标签: typescript angular
我在新的 Angular 2 路由器中看到了这些新事件。
有 NavigationStart、NavigationEnd、NavigationFailed(或类似的东西)
有人知道如何使用这些吗?我搞砸了一些事情,但无法让他们做任何事情。
【问题讨论】:
标签: typescript angular
Router 提供了一个可以订阅的 events observable
constructor(router:Router) {
router.events.subscribe(event => {
if(event instanceof NavigationStart) {
}
// NavigationEnd
// NavigationCancel
// NavigationError
// RoutesRecognized
}
});
另见
注意
别忘了从router模块导入NavigationStart
import { Router, NavigationStart } from '@angular/router';
因为如果你不导入它instanceof 将不起作用,并且会出现错误NavigationStart is not defined。
【讨论】:
Unhandled Promise rejection: (SystemJS) Error: Cannot resolve all parameters for 'Router'(?, ?, ?, ?, ?, ?, ?). Make sure that all the parameters are decorated with Inject or have valid type annotations and that 'Router' is decorated with Injectable。我用 ROUER_PROVIDERS 和 RC2 处理它,但不知道如何用 RC4 处理它,因为用 RC4 找不到它。你有什么提示或麻烦吗?
@angular/router 导入了Event,但出现编译错误。我必须将其从 @angular/router 中删除,然后执行 router.events.subscribe(event => { ... }) 以使其正常工作(即,将 event:Event 更改为 event)。
就这样
constructor(
private router:Router
){}
this.router.events
.filter(event=> event instanceof NavigationStart)
.subscribe((event:NavigationStart)=>{
// TODO
});
【讨论】:
Property 'filter' does not exist on type 'Observable<Event>'.
import 'rxjs/add/operator/filter'