Angular2:可观察到的呼叫太多

Angular2:可观察到的呼叫太多,angular,service,observable,subscriber,Angular,Service,Observable,Subscriber,因此,目前我创建了一个服务,以便将数据从一个组件传递到另一个组件。假设我有一个选择组件和一个组件工厂。为了将选定的值从选定组件传递到工厂,我设计了此服务 以下是该服务的外观: import { Injectable } from '@angular/core'; import {Subject} from "rxjs/Subject"; @Injectable() export class ObservableService { private dataSource = new Sub

因此,目前我创建了一个服务,以便将数据从一个组件传递到另一个组件。假设我有一个选择组件和一个组件工厂。为了将选定的值从选定组件传递到工厂,我设计了此服务

以下是该服务的外观:

import { Injectable } from '@angular/core';
import {Subject} from "rxjs/Subject";

@Injectable()
export class ObservableService {
    private dataSource = new Subject();
    data = [];
    data$ = this.dataSource.asObservable();

    updateFilter(value) {
        this.data.push(value);
        console.log('Changes transfer');
        this.dataSource.next(this.data)
    }
}
所以,正如我所说的,我必须将数据从属于select组件的html
select
input路径发送到工厂,下面是select组件html

<select (change)="onChange($event)">
    <option value="">Options</option>
    <option *ngFor="let option of options" [value]="option.value">{{ option.name }}</option>
</select>
}

下面是我如何在factory组件中捕获数据

ngOnInit() {
    this._observable.data$.subscribe(
        data => console.log('Changes detected');
    )
}
您可能会注意到我在数据传输的每个阶段都使用了控制台命令。事实上,我得到了这个:

Changes sent
Changes transfer
(13) Changes detected
因此,事实上,可观察订户检测到13个变化!请帮助我了解这种奇怪的行为从何而来?

请提供。“另一个组件”是什么?请提供。“另一个组件”是什么?
Changes sent
Changes transfer
(13) Changes detected