使用Angular中的单击事件动态更改ngStyle

Posted

技术标签:

【中文标题】使用Angular中的单击事件动态更改ngStyle【英文标题】:Dynamically change ngStyle with click event in Angular 【发布时间】:2021-06-04 10:53:49 【问题描述】:

我希望在单击不同按钮时更改元素的颜色,但我似乎找不到不断检查我的布尔值的解决方案。 这是我的代码:

component.ts:

ngOnInit():void
if(this.upvotes.includes(this.user.id?))
      this.isGoldUp = true;
    

html

<span (click)="arrowUp()" [ngStyle]="'color': isGoldUp? '#00aeff' : '#000000'" > </span>
<span (click)="arrowDown()"> </span>

到目前为止,代码都可以正常工作。当组件加载时,它会检查他们是否喜欢评论并相应地更改颜色。但是,如果我按下箭头,我希望颜色也会改变。

component.ts:

arrowDown()
this.isGoldUp = false;

这确实会更新布尔值,但不会更新 ng 样式,因此不会更改颜色。 有人知道我在做什么错吗?提前致谢!

【问题讨论】:

【参考方案1】:

我认为这是一个语法错误。我在这里应用了它,它正在工作

https://angular-ivy-ry9fyj.stackblitz.io

component.html

<span 
  title="Click to upvote" 
  (click)="arrowUp()" 
  [ngStyle]="'color': isGoldUp ? '#00aeff' : '#ff0000'"
>
  Upvote
</span>
<span 
  title="Click to downvote" 
  (click)="arrowDown()"
>
  Downvote
</span>

<br>

<p>
  Vote: isGoldUp ? 'Upvoted' : 'Down voted'
</p>

component.ts

export class AppComponent 
  name = "Angular " + VERSION.major;
  isGoldUp = false;
  upvotes: string[] = [];
  user: any;

  ngOnInit(): void 
    if (this.upvotes.includes(this.user.id)) 
      this.isGoldUp = true;
    
  

  arrowUp() 
    this.isGoldUp = true;
  

  arrowDown() 
    this.isGoldUp = false;
  

我希望这会有所帮助。

【讨论】:

以上是关于使用Angular中的单击事件动态更改ngStyle的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Angular 2 中动态更改 :host 中的 CSS?

如何通过单击外部按钮在 agggrid 中动态更改样式?

Javascript - 单击表行上的事件以更改HTML元素

通过单击事件处理程序防止 routerLink 更改路由

什么是 Textarea 中的 Angular4“更改”事件触发指令

angular变更检测和onPush策略