繁体   English   中英

更新变量时,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';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM