Angular 在“角度2”中单击“从”按钮时更改导航级别

Angular 在“角度2”中单击“从”按钮时更改导航级别,angular,dependency-injection,angular-components,Angular,Dependency Injection,Angular Components,我的angular 2应用程序中有一个主导航组件,单击导航中的某个项目后,选定的css类将应用于选定的导航项目。然而,挂断我的东西是在我的应用程序中的一个页面上,我有一个按钮,一旦点击就会将用户路由到另一个页面,我希望主导航也相应地改变 以下是我的一些代码片段: 导航组件 export class NavComponent { links: {}; selectedClass: string; ngOnInit() { this.links = [

我的angular 2应用程序中有一个主导航组件,单击导航中的某个项目后,选定的css类将应用于选定的导航项目。然而,挂断我的东西是在我的应用程序中的一个页面上,我有一个按钮,一旦点击就会将用户路由到另一个页面,我希望主导航也相应地改变

以下是我的一些代码片段:

导航组件

export class NavComponent {
    links: {};
    selectedClass: string;

    ngOnInit() {
        this.links = [
        {
            title: "Home",
            route: "/app/home",
            hidden: false
        },
        {
            title: "Add",
            route: "/app/add",
            hidden: false
        }];
    }

    selectedLink(link: String) {
        this.selectedClass = link;
    }  
nav.html

<ng-container *ngFor="let link of links">
    <li *ngIf="!link.hidden" [routerLink]="link.route" [class.selected]="link == selectedClass" (click)="selectedLink(link)" [title]="link.name">
        <span>{{link.name}}</span>
    </li>
</ng-container>
我想触发“selectedClass”功能,通过在另一个组件中单击按钮,使选定的导航项更改CSS类


非常感谢您的帮助。谢谢

正如garethb所说,您可以使用ngrx拥有一个存储应用程序状态的存储区。但为了保持简单,这里有两种其他方法:

您可以使用
@Input()selectedClass:string导航组件中编写>并使用

<nav-component selectedClass="class-name"></nav-component>
然后从组件中相应地设置它

constructor(public somethingService: SomethingService) {
   this.somethingService.selectedClass = 'first-class'
}
从模板中,您最终将使用

somethingService.selectedClass

看看redux。您可以在中心位置存储/修改类名,并可以从应用程序中的任何位置进行访问。
constructor(public somethingService: SomethingService) {
   this.somethingService.selectedClass = 'first-class'
}
somethingService.selectedClass