【问题标题】:Switch between 2 values in a class [closed]在类中的2个值之间切换[关闭]
【发布时间】:2018-03-03 12:04:57
【问题描述】:

我想在一个类中的两个值之间切换。

这样的,

<ion-item *ngFor="let part of partner" class="border_bottom bdr_radius">
<p class="font_c_2 gra_reg" #short (click)="onShowHide(short)" [ngStyle]="{'white-space': whiteSpace}">
  {{part.fsp_partner_location}} 
</p>
</ion-item>

public onShowHide(controlToShow) {

this.render.setStyle(controlToShow, white-space=='normal' ? 'nowrap' : 'normal');

}

以上代码抛出错误:“白色未定义”

我知道我的格式不正确,我们将不胜感激。

谢谢

【问题讨论】:

  • 组件 ts 文件中的white-space 是什么?
  • white-space 实际上是一个 css 类属性,我想在点击时更改它
  • 空白=='正常' ? 'nowrap' : 'normal' 作为 setstyle 的第二个参数没有意义,您应该检查文档以了解您正在使用的渲染实现

标签: javascript angular ionic-framework


【解决方案1】:

试试这个

this.render.setStyle(controlToShow, white-space=='normal' ? 'nowrap' : 'normal');

【讨论】:

  • 抛出错误:白色未定义
【解决方案2】:

现在,当我知道您的代码时,我会这样做:

HTML 部分:

<ion-item *ngFor="let part of partner; let i=index" class="border_bottom bdr_radius"> 
<p class="font_c_2 gra_reg" #short (click)="onShowHide(i)" [ngClass]="{'long': selected === i, 'short': selected != i}"> 
{{part.fsp_partner_location}} 
</p> 
</ion-item>

css 部分:

.long {
    white-space: normal;
}
.short{
        white-space: nowrap;
}

你的 ts 文件:

selected = 0;

onShowHide(index: number) {
   this.selected = index;
}

当您单击项目时,它将为其设置normal,其他人将设置have nowrap

【讨论】:

  • 抛出错误:白色未定义
  • 你打算如何改变空白?通过点击某物或其他东西?
  • 我编辑了问题。
  • 请阅读我编辑的答案
  • 我的 2 美分,- 不能成为打字稿中标识符的一部分。
【解决方案3】:

要在单击事件上执行此操作,只需设置事件处理程序并传递控件即可。然后检查哪个是您当前的课程并应用您想要应用新课程的逻辑

Demo here

HTML

  <ion-item *ngFor="let item of items">
    <h3 #text>{{item}}</h3>
    <button ion-button item-right color="light" (click)="onSwitch(text)">Switch Primary / Danger</button>
    <button ion-button item-right (click)="onPrimary(text)">Set Primary</button>
    <button ion-button color="danger" item-right (click)="onDanger(text)">Set Danger</button>
  </ion-item>

TS

  public items: string[] = [
    "Item 1",
    "Item 2",
    "Item 3",
    "Item 4",
    "Item 5",
    "Item 6",
    "Item 7",
    "Item 8",
    "Item 9",
    "Item 10",
  ];

  constructor(public navCtrl: NavController, private render: Renderer2) { }

  public onSwitch(control) {
    if(control.classList.contains('primary')){
      this.render.removeClass(control, 'primary');
      this.render.addClass(control, 'danger');
    }
    else{
      this.render.removeClass(control, 'danger');
      this.render.addClass(control, 'primary');
    }

  }
  public onPrimary(control) {
    this.render.addClass(control, 'primary');
  }
  public onDanger(control) {
    this.render.addClass(control, 'danger');
  }

否则,请使用其他答案之一

【讨论】:

  • 这似乎是一个 CSS 规则而不是一个布尔变量。
  • 已修复...我只是猜测这是一个变量,因为我们在这里进行了对话stackoverflow.com/questions/49082846/…
  • 它再次改变了所有项目的类别,而不是我点击的那个
  • 这是因为你一开始没有提到点击你的问题。但没问题我的朋友。我已经编辑了我的答案,因此您可以为每个特定控件应用所需的逻辑,避免设置变量变量
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-04
  • 2023-03-31
  • 2013-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多