我正在尝试跨模块工作 - 我在模块中编写了一个服务
共享服务
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class SharedService {
private paramsSource = new Subject<any>();
current_params$ = this.paramsSource.asObservable();
set_current_params( params:any) {
this.paramsSource.next(params);
}
get_current_params(){
console.log(this.current_params$)// returns {'id':'15'} on console
return this.current_params$
}
我从一个并行模块调用它,我可以通过构造函数调用服务来设置当前参数。但是,getter 似乎不适用于同一个模块。订阅似乎不起作用。它似乎返回一个可观察的,但我无法订阅它。
我的组件.ts
import { Component, OnDestroy } from '@angular/core';
import { SharedService } from '../../../core/shared/shared.service';
import { Subscription, Observable } from 'rxjs';
@Component({
selector: '[app-myComponent]',
templateUrl: './myComponent.component.html',
styleUrls: ['./myComponent.component.scss']
})
export class MyComponentComponent implements AfterViewInit {
constructor(
private shared: SharedService
) { }
ngOnInit() {
this.shared.set_current_params({'id':'15'});
{
ngAfterViewInit() {
console.log(this.sharedService.get_current_params());//log line 1
this.shared.get_current_params().subscribe(current_params => {
console.log('anything'); //log line 2
console.log(current_params); //log line 3
})
}
日志第 1 行在第一行返回一个 observable 但是,订阅什么也不返回,日志 2 和 3 是空的。
我尝试从不同的模块进行相同的订阅,getter 也可以。为什么它没有在 getter 中被这个组件拾取?