所以我有这个progressLoaderComponent:
import { Component, OnInit } from '@angular/core';
import { Subscription } from 'rxjs/Subscription';
import { ProgressLoaderService } from './progress-loader.service';
@Component({
selector: 'app-progress-loader',
templateUrl: './progress-loader.component.html',
styleUrls: ['./progress-loader.component.scss']
})
export class ProgressLoaderComponent implements OnInit {
public prgLoaderSubscription: Subscription;
// Loader Type
public prgLoaderType;
constructor(private _pl: ProgressLoaderService) {
this.prgLoaderType = 'spinner';
}
ngOnInit() {
this.prgLoaderSubscription = this._pl.loaderSubject$.subscribe(data => {
this.prgLoaderType = data.loaderType;
console.log('**************************', this.prgLoaderType);
});
}
}
和progressLoaderSerice:
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class ProgressLoaderService {
private loaderSubject = new Subject<any>();
public loaderSubject$ = this.loaderSubject.asObservable();
constructor() { }
setLoaderType(loaderType) {
this.loaderSubject.next({loaderType: loaderType});
}
}
在其他组件中,我确实将setLoaderType()
称为:
this._pl.setLoaderType('WTF !!!');
现在progressLoaderComponents onInit()订阅中的console.log()确实输出了WTF!!!
,但是无论我怎么尝试,属性prgLoaderType
都不会更新。那怎么可能?>
答案 0 :(得分:0)
根据您的共享代码,我在stackblitz上创建了一个有角度的项目。
看看。 https://stackblitz.com/edit/stackoverflow-51212347
我没有发现您的代码有任何问题。它应该按原样工作,我没有对其进行修改。查看app.module.ts
,看看您是否输入正确。同样在app.component.ts
中,我每1秒调用一次服务,持续10秒,并且您可以看到每次都在组件中设置变量。