【问题标题】:How to pass today date to 'new BehaviorSubject(date)' Angular 6如何将今天的日期传递给 'new BehaviorSubject(date)' Angular 6
【发布时间】:2018-06-19 14:52:55
【问题描述】:

我有一个 Angular 6 用例,其中, 我需要更新应用程序组件中的日期,所有其他组件都将使用该日期,这些组件将使用具有上述日期的选择查询访问 mysql DB 以获取数据。通过编写服务,我能够实现这一目标。

现在我希望默认日期显示为今天或今天, 从

返回
SELECT valval FROM global_configs WHERE valname = 'erday'

为哪个服务编写如下

@Injectable()
export class ErdayService {

  public baseUrl = 'http://localhost:8080/api';
  public erday:any;  
  **private dateSource = new BehaviorSubject('Default Date');**
  currentMessage = this.dateSource.asObservable();

  constructor(private _http: Http) { }

  getErday() {

    return this._http.get(this.baseUrl + '/erday');
    }

    changeMessage(message: string) {
      console.log("getting message...",message);
      this.dateSource.next(message)
    }

    setDate(dateValue:any){
      this.dateSource.next(dateValue);  
    }
}

但我想传递从 getErday() 收到的今天的日期或“erday”,而不是 'Default Date' private dateSource = new BehaviorSubject('Default Date');

谁能帮帮我。我是 Angular 的新手,服务和 Observable 总是让我感到困惑。

【问题讨论】:

  • 我的回答有帮助吗?
  • 是的,我能够使用您的 dateSource 代码获取今天的日期。

标签: angular angular2-services angular6


【解决方案1】:

如果你想传递今天的日期,请使用 javascript 的 Date:

private dateSource = new BehaviorSubject<any>(new Date().toLocaleDateString()));

如果您想传递从getErday() 收到的“erday”,您可以使用tap 运算符来接入observable 的流量

import {tap} from 'rxjs/operators';//
private dateSource = new BehaviorSubject<any>('Default Date');
        return this._http.get(this.baseUrl + '/erday').
        pipe(tap(result=>
        {this.setDate(result);
        return result;})
        );

【讨论】:

  • 是的,我能够使用您的 dateSource 代码获取今天的日期。但是当我通过getErday() { return this._http.get(this.baseUrl + '/erday').pipe(tap(result=&gt; {this.setDate(result); return result;})); } 时,它不会将private dateSource = new BehaviorSubject('Default Date'); 中的“默认日期”替换为从getErday() 返回的dateSource = erday。你能纠正我哪里做错了吗?
  • 做一个console.log(result) inside 点击并分享o/p?
  • 能够达到正确的结果,如下RESULT ---------------&gt; Response {_body: "2018-07-07", status: 200, ok: true, statusText: "OK", headers: Headers, …} 我打电话给this._erdayService.currentMessage.subscribe(message =&gt;{ console.log("hitting.... MESSAGE",message); this._date = message; 而不是this._erdayService.getErday().subscribe((erday) =&gt; { //this._erdayService.setDate(erday.text()); console.log("hitting.... pie chart this._date ----&gt;",this._date); this._date= erday.text(); 谢谢VIkas,这很有帮助
  • 听起来很棒,很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多