访问* ngIf中的url路径

时间:2017-08-25 14:10:54

标签: angular angular-router

我需要在*ngIf内访问我的网址路径。我尝试过以下方法:

import { ActivatedRoute } from '@angular/router';

@Component({
    selector: 'my-app',
    providers: [],
    templateUrl: 'app.component.html'
})
export class AppComponent implements OnInit {

    constructor(public route: ActivatedRoute) {

    }
}

在我的HTML / Pug中:

div(*ngIf='route.firstChild?.url?.value[1]?.path == "somePath"')

当我使用angular cli构建它时它确实有效,但当我尝试使用aot构建它时,我收到以下错误:Property 'value' does not exist on type 'Observable<UrlSegment[]>'

似乎我不允许直接访问*ngIf内的可观察值

1 个答案:

答案 0 :(得分:1)

并不是你不能直接访问observable的值,而是当浏览器初始化视图时,observable的值是未定义的。这通常是Observables的工作方式,因为它们本质上是异步的。

我可以想到两种方法来解决这个问题:

  1. 使用Angular 2的异步管道:https://angular.io/api/common/AsyncPipe。这将允许视图等待observable提供的下一个值,AOT不应该抱怨。
  2. 在构造函数或ngOnInit生命周期钩子中订阅路径的值,将该值分配给组件类中的变量,并在ngIf语句中使用该组件绑定变量(确保初始化变量如果您走这条路线或者AOT可能会抱怨该值未定义,则为false)