私には2つのコンポーネントがあります。 コンポーネントの1つは、サブスクリプションを使用してメンバー(前述のBehaviorSubject)を追跡します。BehaviorSubjectは元の値にリセットされ続けます
BehaviorSubjectの値は、ユーザーがボタンをクリックすると更新され、プッシュされます。
ただし、購読すると、これまでにプッシュされた値だけが元の値(つまり0)になります。
Navbarコンポーネントは、CountServiceでBehaviorSubjectが宣言されているサブスクライバです。
マイCountService:
@Injectable()
export class CountService {
private count:number;
public countObservable:BehaviorSubject<number>;
public savedItems = { campaigns: [], news: [] };
constructor (private http: Http) {
this.count=0;
this.countObservable = new BehaviorSubject<number>(this.count);
this.countObservable.next(this.count);
}
keep(keepId: string, type: string){
!!this.savedItems[type].length ?
this.savedItems[type].find(i => i == keepId).length ?
console.log('exist') : this.keepInSavedItems(keepId, type)
this.keepInSavedItems(keepId, type);
}
keepInSavedItems(keepId, type){
this.savedItems[type].push(keepId);
this.count++;
this.countObservable.next(this.count);
}
}
私のナビゲーションバーコンポーネント:
@Component({
selector: 'navbar',
templateUrl: './navbar.component.html',
providers: [ CountService ]
})
export class NavigationbarComponent implements OnInit {
count:number;
constructor(public countService: CountService){
this.count=0;
}
ngOnInit() : void {
this.countService.countObservable.subscribe(count => this.count=count);
}
}
でそれを宣言する、すなわちどのようにあなたのクリック方法がどのように見えるのでしょうか? – Alex
私は実際に観測可能な静的にすることで解決することができました。 –