Angular 5 .- Components属性没有更新???为什么?

时间:2018-07-06 14:13:35

标签: angular service components

所以我有这个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都不会更新。那怎么可能?

1 个答案:

答案 0 :(得分:0)

根据您的共享代码,我在stackblitz上创建了一个有角度的项目。

看看。 https://stackblitz.com/edit/stackoverflow-51212347

我没有发现您的代码有任何问题。它应该按原样工作,我没有对其进行修改。查看app.module.ts,看看您是否输入正确。同样在app.component.ts中,我每1秒调用一次服务,持续10秒,并且您可以看到每次都在组件中设置变量。