Angular2 ngstyle не работает при обновлении переменной

Я хочу использовать 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 работает. Тем не менее, ngStyle больше не изменился, даже isNavShow изменилось.

[обновить!] Я изменяю навигационную панель на этот формат, isNavShow действительно изменить правильно. Но ngStyle не работает..

<div class="nav" [ngStyle]="{'visibility':isNavShow?'visible':'hidden'}">{{isNavShow}}</div>

1 ответ

Решение

Параметры от маршрутизатора могут быть только строками, потому что они приходят из URL.

Попробуй это:

this.isNavShow = data['isNavShow'] && data['isNavShow'].toLowerCase() === 'true';
Другие вопросы по тегам