子组件之间的通信 - 触发和更改

物理男孩

我有一个“设置”组件,用于更改另一个组件的文本和背景颜色,但是我不确定最好的方法。

如果文本和背景包含在同一个组件中,我知道如何更改它们的样式,我只是不确定不同组件之间的通信。

我的示例代码有一个stackblitz

应用程序组件.html

<settings></settings>
<my-comp></my-comp>

我的comp.component.html

<div #textDiv>
  <p>This is the component where the text and background will change colour</p>
  <p>Lorem ipsum dolor sit amet, consectetur adipis.</p>
</div>

settings.component.html

<div class="container" [ngClass]="{expanded: toggled}">
  <a class="material-icons" (click)="toggle()">settings</a>
  <div>
    <button (click)="changeTextColour()">Change text</button>
    <button (click)="changeBackgroundColour()">Change BG</button>
  </div>
</div>

settings.component.ts

export class SettingsComponent  {
  toggled = false;

  toggle() {
    this.toggled = !this.toggled;
  }

  changeTextColour() {
    // Do something
  }

  changeBackgroundColour() {
    // Do something
  }
}

更新

从那以后,我试图让一项服务工作,但似乎进展不顺利。

服务.ts

export class SettingsService {
  text = new Subject();

  setColour(colour) {
    this.text = colour;
  }

  get getColour(): Observable<any> {
    return this.text;
  }
}

settings.ts -从组件设置颜色

constructor(private settings: SettingsService) {}

  changeTextColour() {
    this.settings.setColour('green');
  }

my-comp.ts -订阅颜色变化

@ViewChild('textDiv')
  private text: ElementRef;

  constructor(private service: SettingsService) {
    this.service.getColour.subscribe(res => {
      this.text.nativeElement.style.background = res;
    });
  }
约瑟夫·比西里尤

创建服务以在组件之间进行通信。您所要做的就是在服务中创建一个 observable,然后您可以在一个组件中发出更改并订阅另一个组件中的更改。angular Docs 在这里解释了它https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service

基于更新

服务.ts

export class SettingsService {
  text = new Subject<string>();

  colourChanged$ = this.text.asObservable();

  setColour(newColour) {
    this.text.next(newColour);
  }
}

settings.component.ts

constructor(private settings: SettingsService) {}
  changeColour() {
    this.settings.setColour('green');
  }

我的comp.ts

@ViewChild('textDiv') private text: ElementRef;
subscription: Subscription;
constructor(private settings: SettingsService) {
    this.subscription = settings.colourChanged$.subscribe(
      colour=> {
        this.text.nativeElement.style.background = colour;
    });
}

ngOnDestroy() {
    // prevent memory leak when component destroyed
    this.subscription.unsubscribe();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使子组件和父组件之间的Angular 2通信正常工作?

来自分类Dev

Ember.js:子组件和父组件之间进行通信的公认最佳实践

来自分类Dev

组件与Vue和路由之间的通信

来自分类Dev

标头和组件之间的通信不起作用

来自分类Dev

Ember在视图组件和控制器之间进行通信

来自分类Dev

在vue组件和vue实例之间进行通信

来自分类Dev

如何在 NgModel 组件和管道角度之间进行通信

来自分类Dev

子组件无法触发状态更改

来自分类Dev

angular2中父级和子级组件(由路由器出口分隔)之间的数据通信?

来自分类Dev

组件和子组件之间的Aurelia绑定不反映变化

来自分类Dev

在子组件和父组件之间进行事件处理

来自分类Dev

this.props 不是父组件和子组件之间的函数

来自分类Dev

在React的子组件之间进行通信

来自分类Dev

如何在Angular2中的主组件和细节组件之间进行内部通信?

来自分类Dev

组件声明和通信

来自分类Dev

添加,删除子视图并在子视图和主uiviewcontroller之间进行通信

来自分类Dev

角度:@Input更改未在子组件中触发

来自分类Dev

useEffect不是由子组件的ref.current更改触发的

来自分类Dev

使用导航体系结构组件时在活动和片段之间进行通信

来自分类Dev

在后端和前端之间的 IPC 通信中更新角度组件时遇到问题

来自分类Dev

在Angular组件和非Angular组件之间进行通信:从可观察到的回调中返回数据

来自分类Dev

组件和子组件

来自分类Dev

在React Native中的组件之间进行通信(子->父)

来自分类Dev

子组件之间的 Angular 4 Master/Detail 服务通信

来自分类Dev

两个组件之间的通信(与子父无关)

来自分类Dev

为什么父组件和子组件之间的双向绑定不好?

来自分类Dev

在vue-electron中,如何在父组件和子组件之间绑定数据?

来自分类Dev

为什么父组件和子组件之间的双向绑定不好?

来自分类Dev

JPannel组件之间的通信

Related 相关文章

  1. 1

    如何使子组件和父组件之间的Angular 2通信正常工作?

  2. 2

    Ember.js:子组件和父组件之间进行通信的公认最佳实践

  3. 3

    组件与Vue和路由之间的通信

  4. 4

    标头和组件之间的通信不起作用

  5. 5

    Ember在视图组件和控制器之间进行通信

  6. 6

    在vue组件和vue实例之间进行通信

  7. 7

    如何在 NgModel 组件和管道角度之间进行通信

  8. 8

    子组件无法触发状态更改

  9. 9

    angular2中父级和子级组件(由路由器出口分隔)之间的数据通信?

  10. 10

    组件和子组件之间的Aurelia绑定不反映变化

  11. 11

    在子组件和父组件之间进行事件处理

  12. 12

    this.props 不是父组件和子组件之间的函数

  13. 13

    在React的子组件之间进行通信

  14. 14

    如何在Angular2中的主组件和细节组件之间进行内部通信?

  15. 15

    组件声明和通信

  16. 16

    添加,删除子视图并在子视图和主uiviewcontroller之间进行通信

  17. 17

    角度:@Input更改未在子组件中触发

  18. 18

    useEffect不是由子组件的ref.current更改触发的

  19. 19

    使用导航体系结构组件时在活动和片段之间进行通信

  20. 20

    在后端和前端之间的 IPC 通信中更新角度组件时遇到问题

  21. 21

    在Angular组件和非Angular组件之间进行通信:从可观察到的回调中返回数据

  22. 22

    组件和子组件

  23. 23

    在React Native中的组件之间进行通信(子->父)

  24. 24

    子组件之间的 Angular 4 Master/Detail 服务通信

  25. 25

    两个组件之间的通信(与子父无关)

  26. 26

    为什么父组件和子组件之间的双向绑定不好?

  27. 27

    在vue-electron中,如何在父组件和子组件之间绑定数据?

  28. 28

    为什么父组件和子组件之间的双向绑定不好?

  29. 29

    JPannel组件之间的通信

热门标签

归档