2017-02-27 49 views
0
下面

另一个组件更新的CSS类我的导航栏组件是我的进度栏组件如何从角2

@Component ({ 
    selector: 'progress-bar', 
    templateUrl: './progress-bar.component.html', 
    styleUrls: ['./progress-bar.component.css'] 
}) 



    export class ProgressBarComponent { 


} 

这是HTML文件

<div class="step-by-step"> 
    <ul class="unstyled clearfix"> 
    <li class="step step-ok"><span>step one</span></li> 
    <li class="step step-ok"><span>step two</span></li> 
    <li class="last-step step-ok"><span>step three</span></li> 
    </ul> 
</div> 

这是怎么了我的应用程序组件像

进口{元器件}从 “@角/芯”;

@Component ({ 
    selector: '', 


    templateUrl: `<navbar-component></navbar-component> 

<progress-bar></progress-bar> 

<router-outlet></router-outlet>` 
    }) 

    export class AppConfigurationComponent { 

    } 

每个页面来被导航到我已经为这些网页组件(三个总)我希望能够设置CSS类进度条的,我通过网页浏览

下面

是进度条的图像 enter image description here

+0

那么你的进度成分会做更新?并使用更多相关信息来优化您的问题。 – Aravind

+0

进度条显示3页的进步已导航....所以进度条有3个节点...从拳头网页浏览后,在进度条的第一个节点是通过改变颜色更新中... 。注意进度条在其自己的组件中,而其他页面在它们自己的组件中。所以必须有组件 – kuebano

+0

在这种情况下,更简单的方法是为你的进度条创建服务之间进行通信的方式。组件将订阅更改并传递值以相应地查看。看看这里:https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service – mickdev

回答

0

在相应分量

constructor(private router: Router){ 
    if(this.router.url == "/componentName") { 
     $("progress-bar").addClass("home"); // add jquery or do it in angular way.. 
    } 
} 
1

有尝试此有很多的方式来做到这一点,尝试在ProgressBarComponent

export class ProgressBarComponent implements OnInit { 
 

 
    step = { 
 
    one: true, 
 
    two: false, 
 
    three: false 
 
    } 
 

 
    constructor(private router: Router) { 
 
    } 
 

 
    ngOnInit() { 
 

 
    this.router.events.subscribe(event => { 
 

 
     if (event instanceof NavigationEnd) { 
 

 
      this.setStep(event.path); 
 
     }); 
 
    } 
 
    
 
    setStep(path){ 
 
    
 
    //replace the string with your actual component path 
 
    this.step.two = (path === '/secondPage' || path === '/thirdPage') ? true : false; 
 
    this.step.three = (path === '/thirdPage') ? true : false; 
 
    } 
 
}
<div class="step-by-step"> 
 
    <ul class="unstyled clearfix"> 
 
    <li class="step" [class.step-ok]="step.one"><span>step one</span></li> 
 
    <li class="step" [class.step-ok]="step.two"><span>step two</span></li> 
 
    <li class="last-step" [class.step-ok]="step.three"><span>step three</span></li> 
 
    </ul> 
 
</div>

这应该工作以及这个代码。有(更好的更新从根组件路由器的变化)使用同样的方法this.router.events.subscribe肯定更好的解决方案,我推荐你使用一个应用程序状态像ngrx/store,那么你就可以在任何地方更新这个状态,你进度会按照该缔约国

+0

谢谢.....但假如我完成一步,我注销的应用程序,我希望能够继续下一步,当我登录回来......这可以帮助我实现它吗? – kuebano

+0

这可以在路由器上运行,如果从同一路线继续,则可以获得相同的步骤。所以这取决于你的身份验证如何工作 –