在Angular中,如何确定活动路线?


311

注意: 这里有很多不同的答案,大多数答案一次或一次都有效。事实是,随着Angular团队更改了Router,有效的方法已经改变了很多次。最终将成为 Angular中路由器的Router 3.0版本打破了许多这些解决方案,但提供了一个非常简单的解决方案。从RC.3开始,首选解决方案是使用此答案中[routerLinkActive]所示的方法。

在Angular应用程序中(我撰写本文时为2.0.0-beta.0版本中的当前版本),如何确定当前活动的路由是什么?

我正在开发一个使用Bootstrap 4的应用程序,并且需要一种方法来在<router-output>标签中显示其关联组件时将导航链接/按钮标记为活动状态。

我意识到,当单击其中一个按钮时,我可以自己维护状态,但这不会涵盖将多条路径放入同一条路线的情况(例如主导航菜单以及主组件中的本地菜单) )。

任何建议或链接将不胜感激。谢谢。

Answers:


354

使用新的Angular路由器,您可以[routerLinkActive]="['your-class-name']"向所有链接添加属性:

<a [routerLink]="['/home']" [routerLinkActive]="['is-active']">Home</a>

或者,如果只需要一个类,则为简化的非数组格式:

<a [routerLink]="['/home']" [routerLinkActive]="'is-active'">Home</a>

或者,如果只需要一个类,则使用甚至更简单的格式:

<a [routerLink]="['/home']" routerLinkActive="is-active">Home</a>

有关更多信息,请参见记录不充分的routerLinkActive指令。(我主要是通过反复试验弄清楚这一点。)

更新:routerLinkActive现在可以在此处找到有关指令的更好文档。(感谢@Victor Hugo Arango A.在下面的评论中。)


4
当路线的子代处于活动状态时,有什么方法可以激活它?该代码具有@inputfor选项,但是exact: false只要当前路由的同级也处于活动状态就激活该类。
Matej

1
@ GabrieleB-David我还没有测试过,但是我认为那router.navigate()会很好。routerLinkActive只是该链接是否代表活动路由的指示。
jessepinho's

7
在给定的示例中,[routerLinkActive]被添加到<a />标记中,但是,如果在其他地方需要该类,则也可以将其放置在其他元素上。<ul> <li [routerLinkActive] =“ ['active']”> <a [routerLink]="[myRoute.Route]">
Oblivion2000

2
@jessepinho-尝试过-[routerLinkActive] =“'active'”仅在a-tag中也包含[routerLink]时才有效。如果您使用(click)=“ navitageTo('/ route')”而不是[routerLink],并且在该函数中调用了this.router.navigate(route),则将加载新组件,但您的活动CSS类将不会加载'不适用。我正在尝试在此函数中执行其他操作,除了this.router.navigate(..)。
Mickael Caruso

2
官方文档中的示例可以为您提供帮助:angular.io/docs/ts/latest/api/router/index / ...
Victor Hugo Arango

69

我在另一个问题中回答了这个问题,但我相信它也可能与此问题相关。这是原始答案的链接: 角度2:如何使用参数确定活动路线?

我一直在尝试设置活动类,而不必确切地知道当前位置(使用路线名称)。到目前为止,最好的解决方案是使用该类中可用的isRouteActive函数Router

router.isRouteActive(instruction): Boolean接受一个参数,该参数是一个路由Instruction对象,并返回truefalse该指令对于当前路由是否成立。您可以Instruction使用Routergenerate(linkParams:Array)生成路由。LinkParams遵循与传递给routerLink指令(例如router.isRouteActive(router.generate(['/User', { user: user.id }])))的值完全相同的格式。

这就是RouteConfig的样子(我对其进行了一些微调以显示params的用法)

@RouteConfig([
  { path: '/', component: HomePage, name: 'Home' },
  { path: '/signin', component: SignInPage, name: 'SignIn' },
  { path: '/profile/:username/feed', component: FeedPage, name: 'ProfileFeed' },
])

并且视图将如下所示:

<li [class.active]="router.isRouteActive(router.generate(['/Home']))">
   <a [routerLink]="['/Home']">Home</a>
</li>
<li [class.active]="router.isRouteActive(router.generate(['/SignIn']))">
   <a [routerLink]="['/SignIn']">Sign In</a>
</li>
<li [class.active]="router.isRouteActive(router.generate(['/ProfileFeed', { username: user.username }]))">
    <a [routerLink]="['/ProfileFeed', { username: user.username }]">Feed</a>
</li>

到目前为止,这是我首选的解决方案,可能对您也有帮助。


1
我认为这种解决方案比公认的解决方案更好,因为它使用的是Angular API,而不是匹配路径的正则表达式。不过还是有点难看,只要能够做到就好了router.isRouteActive('Home')
菲利普(Philip)

2
:我在试图实施该解决方案,所以也许对于一些可能有用面临着一些问题stackoverflow.com/questions/35882998/...
尼基塔·弗拉先科

5
不应忘记加入Router课程的构造函数
Nikita Vlasenko

2
在最新的Angular 2版本中,我name代替as了路由器配置对象。
ComFreek

9
:这可以在RC1可以代替router.urlTree.contains(router.createUrlTree(['Home']))
弗朗Žiačik

35

我解决了此链接中遇到的问题,发现有一个简单的解决方案可以解决您的问题。您可以改用router-link-active您的样式。

@Component({
   styles: [`.router-link-active { background-color: red; }`]
})
export class NavComponent {
}

2
我相信这应该是公认的答案。Angular2的路由器会自动为您添加。
加布

2
不幸的是,该课程在<a>上添加,而不是在<li>上添加
laifjei

不幸的是,它并不能很好地工作。我有一动态生成的菜单和router-link-active类不被添加到活性ali。但是有一个地方我正在使用引导程序,nav-tabs并且在那里工作。
Shri 2016年

33

基于https://github.com/angular/angular/pull/6407#issuecomment-190179875的 @ alex-correia-santos答案的小改进

import {Router, RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
// ...
export class App {
  constructor(private router: Router) {
  }

  // ...

  isActive(instruction: any[]): boolean {
    return this.router.isRouteActive(this.router.generate(instruction));
  }
} 

并像这样使用它:

<ul class="nav navbar-nav">
    <li [class.active]="isActive(['Home'])">
        <a [routerLink]="['Home']">Home</a>
    </li>
    <li [class.active]="isActive(['About'])">
        <a [routerLink]="['About']">About</a>
    </li>
</ul>

以及组件styles : [.active {background-color:aliceblue;中的样式 } ]。+1可以运作
Pratik Kelwalkar '16

很好的解决方案,您可以将路由器设为私有。
Kelvin Dealca '16

这是一个更好的解决方案,对于没有经验的人(尤其是忘记了创建构造函数和传入路由器等小东西的菜鸟)特别有用!您完全值得支票。
Methodician

30

您可以通过将Location对象注入控制器并检查来检查当前路线path(),如下所示:

class MyController {
    constructor(private location:Location) {}

    ...  location.path(); ...
}

您必须确保先导入它:

import {Location} from "angular2/router";

然后,您可以使用正则表达式来匹配返回的路径,以查看哪个路由处于活动状态。请注意,Location无论LocationStrategy您使用哪个类,该类都将返回规范化的路径。因此,即使您使用的HashLocationStragegy是返回的路径,其格式仍然/foo/bar 不会 #/foo/bar


17

您如何确定当前活动的路线是什么?

更新:根据Angular2.4.x更新

constructor(route: ActivatedRoute) {
   route.snapshot.params; // active route's params

   route.snapshot.data; // active route's resolved data

   route.snapshot.component; // active route's component

   route.snapshot.queryParams // The query parameters shared by all the routes
}

查看更多...


14

以标记激活路由routerLinkActive可以使用

<a [routerLink]="/user" routerLinkActive="some class list">User</a>

这也适用于其他元素,例如

<div routerLinkActive="some class list">
  <a [routerLink]="/user">User</a>
</div>

如果部分匹配也应标记为使用

routerLinkActive="some class list" [routerLinkActiveOptions]="{ exact: false }"

据我所知exact: false,它将成为RC.4中的默认设置


11

现在我正在使用带有引导程序4的rc.4,这个对我来说很完美:

 <li class="nav-item" routerLinkActive="active" [routerLinkActiveOptions]="{exact:
true}">
    <a class="nav-link" [routerLink]="['']">Home</a>
</li>

这将适用于url:/ home


确切选项的目的是什么?难道不匹配像这样的子路径/home/whatever
Michael Oryl

是的,这exact意味着该路由将具有相同的名称。如果您计划将其与Twitter bootstrap等工具一起使用,则这是必需的。它已经处理了活动的链接状态,并且没有exact选项就无法正常工作。(不确定它在内核中如何工作,我曾经尝试过并且对我
有用

7

下面是使用RouteData根据当前路线设置menuBar项目样式的方法:

RouteConfig包含带有选项卡的数据(当前路由):

@RouteConfig([
  {
    path: '/home',    name: 'Home',    component: HomeComponent,
    data: {activeTab: 'home'},  useAsDefault: true
  }, {
    path: '/jobs',    name: 'Jobs',    data: {activeTab: 'jobs'},
    component: JobsComponent
  }
])

布局:

  <li role="presentation" [ngClass]="{active: isActive('home')}">
    <a [routerLink]="['Home']">Home</a>
  </li>
  <li role="presentation" [ngClass]="{active: isActive('jobs')}">
    <a [routerLink]="['Jobs']">Jobs</a>
  </li>

类:

export class MainMenuComponent {
  router: Router;

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

  isActive(tab): boolean {
    if (this.router.currentInstruction && this.router.currentInstruction.component.routeData) {
      return tab == this.router.currentInstruction.component.routeData.data['activeTab'];
    }
    return false;
  }
}

7

只是以为我会添加一个不使用任何打字稿的示例:

<input type="hidden" [routerLink]="'home'" routerLinkActive #home="routerLinkActive" />
<section *ngIf="home.isActive"></section>

routerLinkActive变量绑定到模板变量,然后根据需要重新使用。不幸的是,唯一的警告是,您不能在解析器命中之前将所有这些都放在<section>元素上,因为#home需要解决。<section>


在活动路线上应用条件的完美解决方案。@ angular / router否则无效。
罗希·帕特

哇,这很有帮助。谢谢!

6

Router在Angular 2 RC中不再定义isRouteActivegenerate方法。

urlTree -返回当前的网址树。

createUrlTree(commands: any[], segment?: RouteSegment) -将命令数组应用于当前网址树并创建新的网址树。

尝试跟随

<li 
[class.active]=
"router.urlTree.contains(router.createUrlTree(['/SignIn', this.routeSegment]))">

注意,routeSegment : RouteSegment必须注入到组件的构造函数中。


6

这是一个在Angular版本中添加活动路由样式的完整示例,2.0.0-rc.1其中考虑了空根路径(例如path: '/'

app.component.ts->路线

import { Component, OnInit } from '@angular/core';
import { Routes, Router, ROUTER_DIRECTIVES } from '@angular/router';
import { LoginPage, AddCandidatePage } from './export';
import {UserService} from './SERVICES/user.service';

@Component({
  moduleId: 'app/',
  selector: 'my-app',
  templateUrl: 'app.component.html',
  styleUrls: ['app.component.css'],
  providers: [UserService],
  directives: [ROUTER_DIRECTIVES]
})

@Routes([
  { path: '/', component: AddCandidatePage },
  { path: 'Login', component: LoginPage }
])
export class AppComponent  { //implements OnInit

  constructor(private router: Router){}

  routeIsActive(routePath: string) {
     let currentRoute = this.router.urlTree.firstChild(this.router.urlTree.root);
     // e.g. 'Login' or null if route is '/'
     let segment = currentRoute == null ? '/' : currentRoute.segment;
     return  segment == routePath;
  }
}

app.component.html

<ul>
  <li [class.active]="routeIsActive('Login')"><a [routerLink]="['Login']" >Login</a></li>
  <li [class.active]="routeIsActive('/')"><a [routerLink]="['/']" >AddCandidate</a></li>
</ul>
<route-outlet></router-outlet>

6

Angular2 RC 4的解决方案:

import {containsTree} from '@angular/router/src/url_tree';
import {Router} from '@angular/router';

export function isRouteActive(router: Router, route: string) {
   const currentUrlTree = router.parseUrl(router.url);
   const routeUrlTree = router.createUrlTree([route]);
   return containsTree(currentUrlTree, routeUrlTree, true);
}

5

从Angular 8开始,这有效:

<li routerLinkActive="active" [routerLinkActiveOptions]="{ exact: true }">
    <a [routerLink]="['/']">Home</a>
</li>

{ exact: true } 确保它与网址匹配。


5

在2020年,如果要在没有[routerLink]的元素上设置活动类-您可以简单地执行以下操作:

<a
  (click)="bookmarks()"
  [class.active]="router.isActive('/string/path/'+you+'/need', false)" // <== you need this one. second argument 'false' - exact: true/false
  routerLinkActive="active"
  [routerLinkActiveOptions]="{ exact: true }"
>
  bookmarks
</a>

谢谢,伊戈尔。这是最好的解决方案。
德米特里·格林科

感谢您的反馈:)
Kurkov Igor

4

另一个解决方法。在Angular Router V3 Alpha中要容易得多。通过注入路由器

import {Router} from "@angular/router";

export class AppComponent{

    constructor(private router : Router){}

    routeIsActive(routePath: string) {
        return this.router.url == routePath;
    }
}

用法

<div *ngIf="routeIsActive('/')"> My content </div>

导入后,我得到一个无法读取的错误为'isSkipSelf'的空错误。有任何想法吗?
atsituab


4

以下是迄今为止发布的所有Angular 2 RC版本的此问题的答案:

RC4和RC3

将类应用于链接或链接的祖先:

<li routerLinkActive="active"><a [routerLink]="['/home']">Home</a></li>

/ home应该是URL,而不是路由的名称,因为从路由器v3开始,路由对象的名称属性不再存在。

有关该链接的 routerLinkActive指令的更多信息。

要根据当前路线将class应用于任何div:

  • 将Router注入组件的构造函数中。
  • 用户router.url进行比较。

例如

<nav [class.transparent]="router.url==('/home')">
</nav>

RC2和RC1

请结合使用router.isRouteActive和class。*。例如,基于本地路线应用活动班级。

名称和网址都可以传递到router.generate中。

 <li [class.active]="router.isRouteActive(router.generate(['Home']))">
    <a [routerLink]="['Home']" >Home</a>
</li>

4

routerLinkActive在简单的情况下,当有链接并且您想应用某些类时,使用效果很好。但是在更复杂的情况下,您可能没有routerLink或需要更多功能,则可以创建和使用管道

@Pipe({
    name: "isRouteActive",
    pure: false
})
export class IsRouteActivePipe implements PipeTransform {

    constructor(private router: Router,
                private activatedRoute: ActivatedRoute) {
    }

    transform(route: any[], options?: { queryParams?: any[], fragment?: any, exact?: boolean }) {
        if (!options) options = {};
        if (options.exact === undefined) options.exact = true;

        const currentUrlTree = this.router.parseUrl(this.router.url);
        const urlTree = this.router.createUrlTree(route, {
            relativeTo: this.activatedRoute,
            queryParams: options.queryParams,
            fragment: options.fragment
        });
        return containsTree(currentUrlTree, urlTree, options.exact);
    }
}

然后:

<div *ngIf="['/some-route'] | isRouteActive">...</div>

并且不要忘记在管道依赖项中包括管道;)


不错的主意,但在angular2.0.0rc3中,我将this.router.isRouteActive ...更改为this._location.path()并置于此之上:import {Location} from'@ angular / common';
卡米尔·基茨屈斯基

2
代码中似乎缺少了一些东西。在哪里containsTree定义?
奥伊斯坦阿蒙森

4

对于Angular 4+版本,您不需要使用任何复杂的解决方案。您可以简单地使用[routerLinkActive]="'is-active'"

对于带有bootstrap 4导航链接的示例:

    <ul class="navbar-nav mr-auto">
      <li class="nav-item" routerLinkActive="active">
        <a class="nav-link" routerLink="/home">Home</a>
      </li>
      <li class="nav-item" routerLinkActive="active">
        <a class="nav-link" routerLink="/about-us">About Us</a>
      </li>
      <li class="nav-item" routerLinkActive="active">
        <a class="nav-link " routerLink="/contact-us">Contact</a>
      </li>
    </ul>

3

Router类的实例实际上是一个Observable,并且每次更改时都会返回当前路径。这是我的方法:

export class AppComponent implements OnInit { 

currentUrl : string;

constructor(private _router : Router){
    this.currentUrl = ''
}

ngOnInit() {
    this._router.subscribe(
        currentUrl => this.currentUrl = currentUrl,
        error => console.log(error)
    );
}

isCurrentRoute(route : string) : boolean {
    return this.currentUrl === route;
 } 
}

然后在我的HTML中:

<a [routerLink]="['Contact']" class="item" [class.active]="isCurrentRoute('contact')">Contact</a>

1
.subscribe在路由器实例上不可用。
Shivang Gupta

3

如已接受答案的注释之一所述,该routerLinkActive指令也可以应用于实际<a>标签的容器。

因此,例如在Twitter Bootstrap选项卡中,活动类应应用于<li>包含链接的标签:

<ul class="nav nav-tabs">
    <li role="presentation" routerLinkActive="active">
        <a routerLink="./location">Location</a>
    </li>
    <li role="presentation" routerLinkActive="active">
        <a routerLink="./execution">Execution</a>
    </li>
</ul>

挺整洁的 !我想该指令检查标记的内容,并<a>使用routerLink指令查找标记。


2

对于angular 5用户,简单的解决方案是将其添加routerLinkActive到列表项中。

一个routerLinkActive指令通过一个路由相关联routerLink的指令。

它接收一个类的数组作为输入,如果当前路由处于活动状态,它将添加到所附加的元素中,例如:

<li class="nav-item"
    [routerLinkActive]="['active']">
  <a class="nav-link"
     [routerLink]="['home']">Home
  </a>
</li>

如果我们当前正在查看本国路线,则上面的代码将为active tag添加一个活动类。

演示版


2

在最新版本的angular中,您只需检查即可router.isActive(routeNameAsString)。例如,请参见下面的示例:

 <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item" [class.active] = "router.isActive('/dashboard')">
        <a class="nav-link" href="#">داشبورد <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item" [class.active] = "router.isActive(route.path)" *ngFor="let route of (routes$ | async)">
        <a class="nav-link" href="javascript:void(0)" *ngIf="route.childRoutes && route.childRoutes.length > 0"
          [matMenuTriggerFor]="menu">{{route.name}}</a>
        <a class="nav-link" href="{{route.path}}"
          *ngIf="!route.childRoutes || route.childRoutes.length === 0">{{route.name}}</a>
        <mat-menu #menu="matMenu">
          <span *ngIf="route.childRoutes && route.childRoutes.length > 0">
            <a *ngFor="let child of route.childRoutes" class="nav-link" href="{{route.path + child.path}}"
              mat-menu-item>{{child.name}}</a>
          </span>
        </mat-menu>
      </li>
    </ul>
    <span class="navbar-text mr-auto">
      <small>سلام</small> {{ (currentUser$ | async) ? (currentUser$ | async).firstName : 'کاربر' }}
      {{ (currentUser$ | async) ? (currentUser$ | async).lastName : 'میهمان' }}
    </span>
  </div>

并确保您不会忘记在组件中注入路由器。


1

我正在寻找一种在Angular2中使用Twitter Bootstrap风格的导航的方法,但是在将active类应用于所选链接的父元素时遇到了麻烦。发现@ alex-correia-santos的解决方案完美地工作了!

包含选项卡的组件必须导入路由器并在其构造函数中对其进行定义,然后才能进行必要的调用。

这是我的实现的简化版本...

import {Component} from 'angular2/core';
import {Router, RouteConfig, ROUTER_DIRECTIVES} from 'angular2/router';
import {HomeComponent} from './home.component';
import {LoginComponent} from './login.component';
import {FeedComponent} from './feed.component';

@Component({
  selector: 'my-app',
  template: `
    <ul class="nav nav-tabs">
      <li [class.active]="_r.isRouteActive(_r.generate(['Home']))">
        <a [routerLink]="['Home']">Home</a>
      </li>
      <li [class.active]="_r.isRouteActive(_r.generate(['Login']))">
        <a [routerLink]="['Login']">Sign In</a>
      </li>
      <li [class.active]="_r.isRouteActive(_r.generate(['Feed']))">
        <a [routerLink]="['Feed']">Feed</a>
      </li>
    </ul>`,
  styleUrls: ['app/app.component.css'],
  directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
  { path:'/', component:HomeComponent, name:'Home', useAsDefault:true },
  { path:'/login', component:LoginComponent, name:'Login' },
  { path:'/feed', component:FeedComponent, name:'Feed' }
])
export class AppComponent {
  title = 'My App';
  constructor( private _r:Router ){}
}

1

假设您要将CSS添加到我的活动状态/标签中。使用routerLinkActive激活您的路由链接。

注意:“活动”是我的班级名称

<style>
   .active{
       color:blue;
     }
</style>

  <a routerLink="/home" [routerLinkActive]="['active']">Home</a>
  <a routerLink="/about" [routerLinkActive]="['active']">About</a>
  <a routerLink="/contact" [routerLinkActive]="['active']">Contact</a>

0

我正在使用角度路由器^3.4.7,但routerLinkActive指令仍然存在问题。

如果您有多个具有相同网址的链接,那么它就无法正常工作,而且它似乎并没有一直刷新。

受@tomaszbak答案的启发,我创建了一个小组来完成这项工作


0

纯HTML模板就像

 <a [routerLink]="['/home']" routerLinkActive="active">Home</a>
 <a [routerLink]="['/about']" routerLinkActive="active">About us</a>
 <a [routerLink]="['/contact']" routerLinkActive="active">Contacts</a>

0

从在.ts中导入RouterLinkActive开始

从“ @ angular / router”导入{RouterLinkActive};

现在在HTML中使用RouterLinkActive

<span class="" routerLink ="/some_path" routerLinkActive="class_Name">Value</span></a>

为类“ class_Name”提供一些css,因为当该链接处于活动/单击状态时,您会在检查时跨度找到该类。


0

一种编程方式是在组件本身中执行此操作。我在这个问题上苦苦挣扎了三个星期,但放弃了有角度的文档,而是阅读了使routerlinkactive工作的实际代码,这就是我能找到的最佳文档。

    import {
  Component,AfterContentInit,OnDestroy, ViewChild,OnInit, ViewChildren, AfterViewInit, ElementRef, Renderer2, QueryList,NgZone,ApplicationRef
}
  from '@angular/core';
  import { Location } from '@angular/common';

import { Subscription } from 'rxjs';
import {
  ActivatedRoute,ResolveStart,Event, Router,RouterEvent, NavigationEnd, UrlSegment
} from '@angular/router';
import { Observable } from "rxjs";
import * as $ from 'jquery';
import { pairwise, map } from 'rxjs/operators';
import { filter } from 'rxjs/operators';
import {PageHandleService} from '../pageHandling.service'
@Component({
  selector: 'app-header',
  templateUrl: './header.component.html',
  styleUrls: ['./header.component.scss']
})




export class HeaderComponent implements AfterContentInit,AfterViewInit,OnInit,OnDestroy{

    public previousUrl: any;
    private subscription: Subscription;


      @ViewChild("superclass", { static: false } as any) superclass: ElementRef;
      @ViewChildren("megaclass") megaclass: QueryList<ElementRef>;


  constructor( private element: ElementRef, private renderer: Renderer2, private router: Router, private activatedRoute: ActivatedRoute, private location: Location, private pageHandleService: PageHandleService){
    this.subscription = router.events.subscribe((s: Event) => {
      if (s instanceof NavigationEnd) {
        this.update();
      }
    });


  }


  ngOnInit(){

  }


  ngAfterViewInit() {
  }

  ngAfterContentInit(){
  }



private update(): void {
  if (!this.router.navigated || !this.superclass) return;
      Promise.resolve().then(() => {
        this.previousUrl = this.router.url

        this.megaclass.toArray().forEach( (superclass) => {

          var superclass = superclass
          console.log( superclass.nativeElement.children[0].classList )
          console.log( superclass.nativeElement.children )

          if (this.previousUrl == superclass.nativeElement.getAttribute("routerLink")) {
            this.renderer.addClass(superclass.nativeElement.children[0], "box")
            console.log("add class")

          } else {
            this.renderer.removeClass(superclass.nativeElement.children[0], "box")
            console.log("remove class")
          }

        });
})
//update is done
}
ngOnDestroy(): void { this.subscription.unsubscribe(); }


//class is done
}

注意
对于编程方式,请确保添加router-link并且它带有子元素。如果要更改此设置,则需要摆脱上的子项superclass.nativeElement

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.