Я прихожу к вам в полном отчаянии ... С 1 дня я пытаюсь передать данные между моими двумя компонентами, используя сервис.
Я уже использую этот сервис в другом приложении и знаю, что это работа
Но я попробовал все, что нашел с помощью Google: BehaviorSubject, Subject ... Но в моем случае ничего не работает: значение изменяется в службе благодаря первому компоненту, но ничего происходит во втором компоненте, даже если бы я подписался на значение в сервисе.
Второй компонент получает значение в init, но ничего после ...
Полезно знать: Второй компонент является родителем первого компонента.
Это мой код (на самом деле):
GlobalFn.Service:
import { Injectable } from '@angular/core'
import { Observable, Subject, BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root',
})
export class globalFnService{
id:any;
activeDeepView = new Subject<boolean>();
constructor() {
this.activeDeepView.next(false);
}
deepView(){
this.activeDeepView.next(!this.activeDeepView);
}
getValue(): Observable<any> {
return this.activeDeepView.asObservable();
}
}
Первый компонент (дочерний):
import { Component, OnInit } from '@angular/core';
import { globalFnService } from '../services/globalFn.service';
@Component({
selector: 'app-profil',
templateUrl: './profil.component.html',
styleUrls: ['./profil.component.scss'],
providers: [globalFnService]
})
export class ProfilComponent implements OnInit {
constructor(
private globalFn:globalFnService
) {
}
deepView(){
this.globalFn.deepView();
console.log("clicked !");
}
ngOnInit() {
this.globalFn.getValue().subscribe(value => {
if(value == true){
console.log("status",value);
} else {
console.log("status",value);
}
})
}
}
Второй компонент (родительский):
import { Component, OnInit } from '@angular/core';
import { globalFnService } from '../services/globalFn.service';
@Component({
selector: 'app-home',
templateUrl: 'home.page.html',
styleUrls: ['home.page.scss']
})
export class HomeComponent implements OnInit {
constructor(
private globalFn:globalFnService
) {
this.subscription = this.globalFn.getValue().subscribe(value => {
if(value == true){
console.log("status",value);
} else {
console.log("status",value);
}
})
}
}
Если вы обнаружите, где я совершил ошибку, вы способны спасти мой день ...
Спасибо!