【问题标题】:Angular 8, can checkbox value pass onto components? not not in a parent/child relationAngular 8,复选框值可以传递给组件吗?不是不在父/子关系中
【发布时间】:2025-12-29 01:15:11
【问题描述】:
<input type=checkbox [(ngModel)]="myCheckBox" (ngChanged)="!myCheckBox">

例如,如果我希望上面的代码将“checked”值,即“true or false”传递给其他组件,那么它的内容可以根据“myCheckBox”做出反应 true |假的,而且他们不是亲子关系,有什么办法可以做到吗?请帮忙,真的很感激!!!!

【问题讨论】:

标签: angular checkbox angular6 angular7 angular8


【解决方案1】:

您可以通过不同的方法来实现它。例如:用 EventEmitter 或 rxjs(Subject, BehaviourSubject);

在我的示例中,我是通过 BehaviourSubject 完成的。 stackblitz-link

【讨论】:

    【解决方案2】:

    是的,您可以使用 rxjsBehaviourSubject 来实现此目的

    您必须在复选框中输入一些值,然后 onchange 您必须调用一个函数来通知您另一个组件中的订阅者。我正在为您编写一个非常基本的示例。

    在你的sender.component.html 你可以这样做

    <input type=checkbox [(ngModel)]="myCheckBox" (ngChanged)="!myCheckBox" (change)="notifyOtherComponent()">
    

    然后在你的service.ts 你可以这样做

    import { BehaviorSubject } from 'rxjs';
    
    private messageSource = new BehaviorSubject('default message');
    public currentMessageSubscriber = this.messageSource.asObservable();
    
    
    notify(message: any) {
       this.messageSource.next(message)
    }
    

    在你的sender.component.ts 你可以这样做

      constructor(private __dataService : DataService){}
    
      notifyOtherComponent(){
       this.__dataService.notify({msg : 'do something'}) 
      }
    

    并且在您的 listener.component.ts 中,您可以订阅 BehaviourSubject 类型 Observable 以收听这样的最新值

    constructor(private __dataService : DataService){}
    
    ngOnInit() {
       this.__dataService.currentMessageSubscriber.subscribe((data : any)=>{
        console.log(data) // output : {msg : 'do something'}
      }) 
    }
    

    通过这种方式,您将从一个组件向 observable 发送数据,并将该数据监听到另一个组件。

    【讨论】: