首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular 2-将类从一个组件更改为另一个组件

Angular 2-将类从一个组件更改为另一个组件
EN

Stack Overflow用户
提问于 2016-09-20 12:40:53
回答 1查看 2.2K关注 0票数 0

我有两个组件- A、B和want从A更改B的class.for示例将ng-valid更改为ng-invalid

<A #a></A > <B> </B>

从B开始,我希望将class指定为A,或者将A的ng-valid类更改为ng-invalid。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 15:20:42

看看这个插入器,了解一下如何做:https://plnkr.co/edit/wz771Lnnn3GjHWFmykGl?p=preview

正如您所评论的,您可以使用@Input来访问该组件。

代码语言:javascript
运行
复制
import {Component, NgModule, Input, ElementRef} from '@angular/core'
import {BrowserModule} from '@angular/platform-browser'

@Component({
  selector: 'AComp',
  template: 'a-component',
  styles: [
    ':host(.ng-valid) { color: green; font-weight: bold; }',
    ':host(.ng-invalid) { color: red; font-weight: bold; }'
    ]
})
export class AComp {

  constructor(private _eRef: ElementRef) {}

  public addClass(c: string) {
    console.dir(this._eRef);
    this._eRef.nativeElement.classList.add(c);
  }

  public removeClass(c: string) {
    this._eRef.nativeElement.classList.remove(c);
  }

}

@Component({
  selector: 'BComp',
  template: 'b-component'
})
export class BComp {

  @Input('a-comp') private _aComp: AComp;

  constructor() { }

  ngOnInit() {
    this._aComp.addClass('ng-valid')
    setTimeout(() => this._aComp.addClass('ng-invalid'), 1000);
    setTimeout(() => this._aComp.removeClass('ng-invalid'), 3000);
  }
}

@Component({
  selector: 'my-app',
  template: `
    <div>
      <h2>Hello {{name}}</h2>
      <AComp #acmp></AComp>
      <br />
      <BComp [a-comp]="acmp"></BComp>
    </div>
  `,
})
export class App {
  constructor() {
    this.name = 'Angular2'
  }
}

@NgModule({
  imports: [ BrowserModule ],
  declarations: [ App, AComp, BComp ],
  bootstrap: [ App ]
})
export class AppModule {}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39585805

复制
相关文章

相似问题

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