首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >角度12:一次触发多个子组件

角度12:一次触发多个子组件
EN

Stack Overflow用户
提问于 2022-04-12 04:55:33
回答 1查看 156关注 0票数 0

我遇到这样的情况:父组件呈现5个不同的子组件,在父组件的按钮单击或父组件的值更改时,所有5个子组件都应该执行一些操作(执行一个方法)。

请建议在角度12或13版本的站立练习。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-12 05:30:48

我建议提供共享服务和RXJS Subject

下面是一个例子:https://stackblitz.com/edit/angular-ivy-fvllm7?file=src/app/app.component.ts

服务

代码语言:javascript
运行
复制
@Injectable({
  providedIn: 'root',
})
export class DoSomethingService {
  subject = new Subject<void>();
}

亲本

代码语言:javascript
运行
复制
export class AppComponent {
  constructor(private doSomethingService: DoSomethingService) {}

  makeSomethingHappen() {
    this.doSomethingService.subject.next();
  }
}
代码语言:javascript
运行
复制
<button (click)="makeSomethingHappen()">CLICK ME</button>

<app-one></app-one>
<app-two></app-two>
<app-three></app-three>

儿童

代码语言:javascript
运行
复制
export class OneComponent implements OnInit {
  message = 'Component one standing by...';
  sub = new Subscription();

  constructor(private doSomethingService: DoSomethingService) {}

  ngOnInit() {
    this.sub = this.doSomethingService.subject.subscribe(() =>
      this.doSomething()
    );
  }

  doSomething() {
    this.message = 'Component one did something!';
  }

  ngOnDestroy() {
    this.sub.unsubscribe();
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71837296

复制
相关文章

相似问题

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