在角度2中为库@ angular / router。 this.router.subscribe似乎不再存在?

时间:2016-06-05 22:06:03

标签: angularjs angular

用于库@ angular / router的角度2。 this.router.subscribe似乎不再存在了吗?

它曾经在路由器弃用的旧版本上工作,但现在它似乎没有。 有谁知道它的变化呢?

这是我当前的代码

import {Component} from '@angular/core';
import {CORE_DIRECTIVES, FORM_DIRECTIVES, NgIf, NgClass} from '@angular/common';
import {Router, ROUTER_DIRECTIVES, Routes } from '@angular/router';

@Component({
  moduleId: module.id,
  selector: 'HeaderNavigation',
  providers: [],
  templateUrl: 'header.html',
  directives: [NgIf, NgClass, ROUTER_DIRECTIVES]
})

export class HeaderNavigation{
  router : Router;
  isContactUs: boolean = false;
  isBlog: boolean = false;
  isSignUp: boolean = false;
  isJobs: boolean = false;

  constructor(router: Router){   
      this.router = router;

      this.router.subscribe((currentRoute) => {
          this.isContactUs = false;
          this.isBlog = false;
          this.isSignUp = false;
          this.isJobs = false;

          if(currentRoute === "contact")
            this.isContactUs = true;

          if(currentRoute === "blog" || currentRoute.substring(0, 4) === "blog")
            this.isBlog = true;

          if(currentRoute === "login")
            this.isSignUp = true;

          if(currentRoute === "newJobs" || currentRoute.substring(0, 6) === "newJob")
            this.isJobs = true;
      })
  }
}

2 个答案:

答案 0 :(得分:1)

现在是

this.router.changes.subscribe(

并且它不提供任何值(仅null),它只会通知路线更改。

要获取当前路线注入Location并从那里获取path()

如果您刚刚开始迁移到新路由器,我建议继续使用router-deprecated,可能会再次更换路由器。

答案 1 :(得分:1)

这是改为

的内容
  

this.router.changes.subscribe(()=> {

     

})