【问题标题】:Check for empty angular object in html [duplicate]检查html中的空角度对象[重复]
【发布时间】:2020-07-28 02:13:53
【问题描述】:

我试图在对象是否为空的情况下禁用按钮。在这种情况下,对象 selectedTopics 应该等于 {}

register.ts

ngOnInit() {
    this.topicRequestAnswer = {topics:[]};

    this.selectedTopics = {};  // <- setting equal to {} here
    this.requestTopics();
  }

register.html

<ion-content class="ion-padding">

  <form #form="ngForm" (ngSubmit)="register(form)">
    <ion-grid>
      <ion-row color="primary" class="ion-justify-content-center">
        <ion-col class="ion-align-self-center" size-md="6" size-lg="5" size-xs="12">
          <div class="ion-text-center">
            <h3>...</h3>
          </div>
          <div class="ion-padding">
            <ion-item>
              <ion-input [(ngModel)]="email" name="email" type="email" placeholder="E-Mail" ngModel required></ion-input>
            </ion-item>
            <ion-item>
              <ion-label>Choose a topic</ion-label>
              <ion-select [(ngModel)]="selectedTopics" name="topics" multiple="true" ngModel required>
                <ion-select-option *ngFor="let topic of topicRequestAnswer.topics" value="{{topic}}" class="ion-text-justify" ngModel required>{{topic}}</ion-select-option>
              </ion-select>
            </ion-item>
            <ion-item>
              <ion-input [(ngModel)]="name" name="username" type="username" placeholder="Username" ngModel required></ion-input>
            </ion-item>
            <ion-item>
              <ion-input [(ngModel)]="password" name="password" type="password" placeholder="Password" ngModel required></ion-input>
            </ion-item>
          </div>
          <div class="ion-padding">
            <ion-button size="large" type="submit" [disabled]="form.invalid || selectedTopics == {}" expand="block">Sign Up</ion-button>  // <- the [disabled] condition fails here
          </div>
        </ion-col>
      </ion-row>
    </ion-grid>
  </form>

当我回显空的 $topics 变量时,我的 php 脚本中的输出是

[object Object]

如果没有选择主题,我需要如何更改条件以禁用按钮?

【问题讨论】:

  • 将 selectedTopics 设为数组可能要容易得多..

标签: html angular ionic-framework


【解决方案1】:

即使this.selectedTopics = {};,您的条件也会为假

由于基本原理{} == {}也返回false,所以[disabled] = selectedTopics == {}中的条件也一样

一种检查方法是:

Object.keys(this.selectedTopics).length === 0

要签入 html:

(selectedTopics | json) == '{}'

【讨论】:

  • 如果我使用你的代码,它会给我以下错误:无法读取未定义的属性“键”
  • 您是否尝试在 html 中访问它?
  • 是的,我试图将其置于 [disabled] 状态,删除 'this' 也无济于事
  • 那是脚本,不能在html中工作,更新了上面html的sn-p代码
  • 这行得通,但它是 == 而不是 !=,谢谢!
猜你喜欢
  • 2018-06-21
  • 1970-01-01
  • 2016-12-12
  • 2016-11-19
  • 2011-03-21
  • 2020-10-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
相关资源
最近更新 更多