typescript - Angular 2 *ngIf 不重新评估模型更改

标签 typescript angular

我有一个带有 2 个按钮的导航栏。我希望只显示其他页面的按钮并禁用当前页面的按钮。

打开设置页面时,设置按钮是隐藏的。当我单击配置文件按钮时,它不会禁用并且设置按钮不会出现。

组件类代码如下:

export class SettingsComponent implements OnInit {
   isSettingsProfile = false;
   isSettingsHome = false;
   
   ngOnInit() {
       this.isSettingsHome = true;
       this.isSettingsProfile = false;
   }
   
   OnNavBarClick(button: string) {
       if (button = "settings") {
           console.log ('setting home true/ profile false')
           this.isSettingsHome = true;
           this.isSettingsProfile = false;
       }
       else if (button = "profiles") {
           console.log ('setting home false/ profile true')
           this.isSettingsProfile = true;
           this.isSettingsHome = false;
       }
       
   }

还有导航栏 html:

        <ul class="nav navbar-nav navbar-right">
            <li> <a [routerLink]="['/home']" href="#">Home</a></li>
            <li *ngIf="!isSettingsHome" class="active"><a [routerLink]="['/settings']" href="#" (click)="OnNavBarClick('settings')">Settings</a></li>
            <li *ngIf="!isSettingsProfile"><a [routerLink]="['/settings/profile']" href="#" (click)="OnNavBarClick('profile')">Profile</a></li>
        </ul>

有什么建议吗?

最佳答案

我在实现面包屑组件时遇到了这个问题,并应用了建议的解决方案 in this SO answer .我不得不改成

import { ChangeDetectorRef } from '@angular/core';

因为我用的是angular4然后调用

detectChanges()

在你的函数 OnNavBarClick() 结束时

关于typescript - Angular 2 *ngIf 不重新评估模型更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37814560/

相关文章:

javascript - angular 2 在 typescript 中使用 javascript 包

typescript :typeof checkin 列表项不起作用

node.js - NPM 对等依赖

javascript - Angular 2-再次单击routerLink时重新加载组件

javascript - 如何导入 "PermissionStatus"?

javascript - 测试失败: ReferenceError: SpeechSynthesisUtterance is not defined

typescript 不检测方法改变的属性

angular - 使用 NgRx 时如何避免不必要的 API 调用

ionic-framework - 如何在 ionic 2中插入图像

Angular - 使用子路由延迟加载模块内部模块