2016-10-23 75 views
0

我想通过共享服务在应用组件中显示和隐藏我的导航。 当组件_service.Login调用this._service.setLogin(),属性将被设置为true,但不会影响到应用程序组件,并结合不行从其他子组件绑定应用组件属性

这是我的应用程序组件

@Component({ 
selector: 'pm-app', 
templateUrl: "/app/app.component.html",providers:AuthenticationService]  
,providers: [AuthenticationService] 
    }) 
constructor(private _service: AuthenticationService) {} 

<nav class="off-canvas-navigation"> 

      <li *ngIf='!_service.Login'><a [routerLink]="['/login']">login</a></li> 
      <li *ngIf='_service.Login'><a [routerLink]="['/logout']">logOut</a></li> 
     </nav> 
     <div id="page-content"> 
      <router-outlet></router-outlet> 
     </div> 
</nav> 

和我的共享共用服务队是波纹管

@Injectable() 
    export class AuthenticationService { 
    Login: boolean; 

    setLogin(){this.login=true;} 

和我的另一组成部分是在这里

@Component({ 
    templateUrl: "app/home/login-form.component.html", 
    providers: [AuthenticationService] 
    }) 
    export class LoginFormComponent implements OnInit { 
    constructor(private _service: AuthenticationService) {} 
    login() {this._service.setLogin();} 
} 
+0

组件装饰器中的'providers'?这是哪个角度2版本? – choz

+0

我设置了提供者。角2 rc5 –

回答

1

使用组件providers元属性创建不同的实例为您服务的

所以,使其工作,你应该把providersrootmodule,如下图所示,

(也不要忘记从@Component装饰器中删除提供者)

AppModule.ts

@NgModule({ 
    ... 
    providers: [AuthenticationService] //<<## add here in NgModule decorator 
}) 
相关问题