my.service.ts
@Injectable({
providedIn: 'root',
})
export class MyService {
public myVar$ = new Subject();
}
comp1.component.html
<div>{{ myService.myVar$ | async}}</div>
comp1.component.ts
export class Comp1Component {
constructor(
public myService: MyService
) {}
}
comp2.component.ts
export class Comp2Component {
constructor(
public myService: MyService
) {}
myFunc(){
this.myService.myVar$.next(1000);
}
}
когда вы сабжекту делаете next вызываются все коллбеки подписчиков данного сабжекта. В том числе AsyncPipe в компоненте comp1. AsyncPipe запускает детектор изменений и выводит в шаблон значение обсервабла myService.myVar$ (любой сабджект является обсерваблом)