更新变量时 Angular2 ngstyle 不起作用
Angular2 ngstyle is not working when update variable
我想使用 ngstyle 来显示或隐藏我的导航栏,它是控制器组件的子组件。
控制器Html
<section>
<app-nav class="nav" [ngStyle]="{'visibility':isNavShow?'visible':'hidden'}"></app-nav>
<app-main class="main"></app-main>
</section>
控制器组件
isNavShow:boolean = false;
subRouterParam:Subscription = new Subscription();
constructor(private accountService: AccountService,private route: ActivatedRoute) {}
ngOnInit() {
console.log('account id:'+this.accountService.userData.id);
this.subRouterParam = this.route.params.subscribe(
(data)=> {
this.isNavShow = data['isNavShow']==undefined?false:data['isNavShow'];
}
);
}
ngDoCheck(){
console.log(this.isNavShow);
}
ngOnDestroy(){
this.subRouterParam.unsubscribe();
}
控制器模块
@NgModule({
declarations: [
ConsoleComponent,
NavComponent
],
imports: [
MainModule,
CommonModule
],
providers:[TagService]
})
export class ConsoleModule{}
我已经记录了 isNavShow
值,我很确定 isNavShow
切换值但是 ngstyle 没有更新!
奇怪的是我在开始时设置了 hidden
,并且第一次从 hidden
切换到 visible
有效。然而,即使 isNavShow
改变了,ngStyle 也没有改变。
[更新!] 我将导航栏更改为这种格式,isNavShow
确实更改正确。但是 ngStyle 不起作用..
<div class="nav" [ngStyle]="{'visibility':isNavShow?'visible':'hidden'}">{{isNavShow}}</div>
来自路由器的参数只能是字符串,因为它们来自 URL。
试试这个:
this.isNavShow = data['isNavShow'] && data['isNavShow'].toLowerCase() === 'true';
我想使用 ngstyle 来显示或隐藏我的导航栏,它是控制器组件的子组件。
控制器Html
<section>
<app-nav class="nav" [ngStyle]="{'visibility':isNavShow?'visible':'hidden'}"></app-nav>
<app-main class="main"></app-main>
</section>
控制器组件
isNavShow:boolean = false;
subRouterParam:Subscription = new Subscription();
constructor(private accountService: AccountService,private route: ActivatedRoute) {}
ngOnInit() {
console.log('account id:'+this.accountService.userData.id);
this.subRouterParam = this.route.params.subscribe(
(data)=> {
this.isNavShow = data['isNavShow']==undefined?false:data['isNavShow'];
}
);
}
ngDoCheck(){
console.log(this.isNavShow);
}
ngOnDestroy(){
this.subRouterParam.unsubscribe();
}
控制器模块
@NgModule({
declarations: [
ConsoleComponent,
NavComponent
],
imports: [
MainModule,
CommonModule
],
providers:[TagService]
})
export class ConsoleModule{}
我已经记录了 isNavShow
值,我很确定 isNavShow
切换值但是 ngstyle 没有更新!
奇怪的是我在开始时设置了 hidden
,并且第一次从 hidden
切换到 visible
有效。然而,即使 isNavShow
改变了,ngStyle 也没有改变。
[更新!] 我将导航栏更改为这种格式,isNavShow
确实更改正确。但是 ngStyle 不起作用..
<div class="nav" [ngStyle]="{'visibility':isNavShow?'visible':'hidden'}">{{isNavShow}}</div>
来自路由器的参数只能是字符串,因为它们来自 URL。
试试这个:
this.isNavShow = data['isNavShow'] && data['isNavShow'].toLowerCase() === 'true';