Javascript 除了第一次,为什么角度子路由不渲染组件?

Javascript 除了第一次,为什么角度子路由不渲染组件?,javascript,angular,routing,angular-ui-router,Javascript,Angular,Routing,Angular Ui Router,我的角度项目中几乎没有组件。和子路由,以在一个特殊组件中渲染这些组件。当我第一次单击以路由它时,渲染组件。但在此之后,它只更改url参数,而不呈现任何组件 这是我的密码 course.component.html <div *ngIf="courses"> <a *ngFor="let course of courses" class="btn btn-danger" color="warn" routerLink="{{ course.id }}">{{ cours

我的角度项目中几乎没有组件。和子路由,以在一个特殊组件中渲染这些组件。当我第一次单击以路由它时,渲染组件。但在此之后,它只更改url参数,而不呈现任何组件

这是我的密码

course.component.html

<div *ngIf="courses">
  <a *ngFor="let course of courses" class="btn btn-danger" color="warn" routerLink="{{ course.id }}">{{ course.title }}</a>
</div>

每个组件实例化只调用一次
ngOnInit
。所以这是正常的行为

如果您希望实时更改,则需要使用observable,如:

ngOnInit() {
  this.route.paramMap.pipe(
    switchMap(params => {
      this.segmentId = params.get('segment');
      return this.data.getCourses(this.segmentId);
    })
  ).subscribe(
    data => {
      this.courses = data[0].courses;
      this.meta_data = data[0];
      this.showSpinner = false;
    }
  )
}

找不到switchMap您必须导入运算符:
import{switchMap}来自'rxjs/operators'
ngOnInit() {
  this.route.paramMap.pipe(
    switchMap(params => {
      this.segmentId = params.get('segment');
      return this.data.getCourses(this.segmentId);
    })
  ).subscribe(
    data => {
      this.courses = data[0].courses;
      this.meta_data = data[0];
      this.showSpinner = false;
    }
  )
}