路由器事件的异步管道值始终为null

时间:2017-06-13 13:02:47

标签: angular angular-routing

尝试访问模板中的异步属性时,我遇到了一个非常简单的问题 - 返回的值始终为null。方法如下:

someAsyncProperty():Observable<string> {
    return this._router.events
        .filter(event => event instanceof NavigationEnd)
        .map(event => 'my value');
}

在我的模板中,{{someAsyncProperty() | async}}没有任何内容。

在我的模板中,{{(someAsyncProperty() | async) | json}}呈现为空。

如果我将异步方法改为:

someAsyncProperty():Observable<string> {
    return Observable.of(true)
        .map(event => 'my value');
}

...模板中的值正确呈现。

我不确定这里的问题是什么。使用async管道是不可能的路由器事件还是有其他方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

someAsyncProp$:Observable<string>;
constructor() {
  this.someAsyncProp$ = this.someAsyncProperty();
}
{{someAsyncProp$ | async}}

否则每次更改检测运行时都会创建一个新订阅(someAsyncProperty()被调用)。