首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular 5如何从组件影响主HTML中的ngClass?

Angular 5如何从组件影响主HTML中的ngClass?
EN

Stack Overflow用户
提问于 2018-01-12 08:43:40
回答 1查看 770关注 0票数 0

我正在尝试通过单击不同组件中的其他按钮来更改按钮的样式。

现在,我有一个主html页面,页面上有一个使用angular选择器<component1></component1>加载的angular组件

下面是包含该组件的主html文件:

代码语言:javascript
运行
复制
                  <button id="button01" 
                  tappable>
                     <ion-icon name="square" [ngClass]="Btn1"></ion-icon>
                   </button>                                          

                  <button id="button02" 
                  tappable>
                     <ion-icon name="square" [ngClass]="Btn2"></ion-icon>
                   </button>

这是我的组件HTML文件。它有一个按钮试图将Btn1和Btn2样式更改为button-active3 3类。

代码语言:javascript
运行
复制
<button id="componentbutton" tappable (click)="Btn1='button-active3'; 
  Btn2='button-inactive';">Change Color!</button>

button-active3和button-inactive是我的SCSS文件中按钮的样式类。

我发现这个配置不会触发组件的按钮改变主html文件中按钮的样式。

我怎么才能让它工作呢?

如果我将组件按钮放在主HTML文件中,它将工作得很好。但我认为它不起作用,因为现在按钮在一个组件中,该组件无法访问主HTML文件的ngClass。

请帮帮忙。如果有办法解决这个问题,请告诉我。

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-12 14:53:14

对子对象和父对象之间的通信,您可以使用angular的EventEmitter属性,该属性使用@Output修饰器在某个操作上触发事件,父对象绑定到该事件属性并对这些事件做出反应:

子组件html:

代码语言:javascript
运行
复制
<button id="componentbutton" tappable (click)="someFunction()">Change Color!</button> // you can pass paramters inside the function if you want to trigger an event by passing some values to parent

子T:

代码语言:javascript
运行
复制
@Output() changeClass: EventEmitter<any> = new EventEmitter<any>(); //import output from @angular/core

someFunction() {
  this.changeClass.emit();
}

父html:

代码语言:javascript
运行
复制
<componentName (changeClass)="anotherFn($event)"></componentName>

父ts:

代码语言:javascript
运行
复制
anotherFn(){
  this.Btn1 ='button-active3';
  this.Btn2 ='button-inactive';
}

然后,您可以轻松地将Btn1和Btn2绑定到您想要的任何位置,并应用这些类

代码语言:javascript
运行
复制
<ion-icon name="square" [ngClass]="Btn1"></ion-icon>
<ion-icon name="square" [ngClass]="Btn2"></ion-icon>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48217993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档