css - Angular:ngClass 属性中的条件始终被视为 true

标签 css angular typescript data-binding components

我正在尝试在下面的“EditDialogComponent”(这是一个模态视图)中设置 CSS 类,具体取决于从“AppComponent”设置的名为“showMe”的输入属性:

  1. HTML代码:

    <div [ngClass]="showMe? 'ui active modal': 'ui modal'">
      <i class="close icon"></i>
      <div class="header">
        Edit
      </div>
      <div class="actions">
        <div class="ui black deny button">
          Cancel
        </div>
        <div (click)="clk()" class="ui positive right labeled icon button">
          OK
          <i class="checkmark icon"></i>
        </div>
      </div>
    </div>
    
  2. TypeScript 代码:

    import { Component, Input, Output, OnInit } from '@angular/core';
    
    @Component({
      selector: 'edit-dialog',
      templateUrl: './edit-dialog.component.html',
      styleUrls: ['./edit-dialog.component.css']
    })
    export class EditDialogComponent implements OnInit {
    
      @Input() subject: string
      @Input() showMe: boolean
    
      constructor() { }
    
      clk() {
        window.alert(this.showMe)
      }
      ngOnInit() {
      }
    
    }
    

这是用于将“EditDialogComponent”包含到“AppComponent”中的 HTML 代码:

<edit-dialog showMe="{{show_edit_modal}}" subject='foobar'></edit-dialog>

问题是每当我点击模式的“确定”按钮时,我总是得到与 AppComponentshow_edit_modal 变量相对应的正确 bool 值。然而经过测试,我发现 ngClass 始终将输入值 showMe 视为 true。

为什么 ngClass 总是将输入属性视为 true?

最佳答案

您的 showMe 输入未正确绑定(bind)到 show_edit_modal。 而不是:

<edit-dialog showMe="{{show_edit_modal}}" subject='foobar'></edit-dialog>

你应该:

<edit-dialog [showMe]="show_edit_modal" subject='foobar'></edit-dialog>

这将导致 showMe 由父级的 show_edit_modal 设置(和更新)。

一般来说,您永远不需要在任何 html 标记内使用插值 ({{ }})。通常有一种不同的、更合适的方式来表达您对 Angular 的需求。

关于css - Angular:ngClass 属性中的条件始终被视为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48748348/

相关文章:

typescript - 在 TypeScript 中键入由继承方法调用的重写方法(错误?)

css - Flexbox 容器问题,忽略宽度和高度

javascript - 使用 javascript 修改超过 1 个 css 文件

html - Mat Select 多个设置选定值

javascript - Angular 4 和 token

javascript - 是否可以在 Angular 2 中从 JS 创建 HTML 项目?

inheritance - TypeScript:在派生类的构造函数中访问 'super' 之前必须先调用 'this'

html - Bootstrap 放大更改我的文本的大小

javascript - 如何创建多个图像预览

javascript - 使用 Firebase,firebase.auth().currentUser 是 null 值,即使它正在被记录