小编kjo*_*ols的帖子

Angular2 Observable BehaviorSubject服务不起作用

我正在尝试创建自己的可观察服务,但在从服务获取初始数据后,对服务的任何更新都不会传播给任何订阅者.服务看起来像这样:

import { Injectable } from '@angular/core';
import { Observable, BehaviorSubject } from 'rxjs/Rx';

@Injectable()
export class DataService {
  keys : number[] = [4,5,1,3,2];
  private data :BehaviorSubject<number[]> = new BehaviorSubject(this.keys);

  constructor() {};

  public setKey(i:number, val:number) :void {
    this.keys[i]=val;
    this.data.next(this.keys);
  }
  public getData() :Observable<number[]> {
    return new Observable(fn => this.data.subscribe(fn));
  }
  public getKeys() :number[] {
    return this.keys;
  }
}
Run Code Online (Sandbox Code Playgroud)

使用该服务的组件获得初始数据就好了.该组件在构造函数中获取其数据:

constructor(public dataService: DataService) {
    dataService.getData().subscribe(data => {
      console.log("Gotcha!");
      this.data.datasets[0].data = data)
    });
};
Run Code Online (Sandbox Code Playgroud)

这给了控制台日志中的一个Gotcha.但是在用其他地方的setKey(2,3)更新数据后,我期待着这个.data.next(this.keys); 向所有订户发送数据,并相应地在该组件内更新数据.但没有数据发送给订阅者..

我以为我想出了Observables,但如果我在这里错过了点,请不要友好;)任何正确方向的指针将不胜感激!

subject observable rxjs angular

19
推荐指数
2
解决办法
1万
查看次数

使用 morgan 进行日志记录仅显示 127.0.0.1:nodejs 中的 :remote-addr

我有一个 NodeJS/Express 应用程序,正在使用 Morgan 进行日志记录: var morgan = require ("morgan"); var app = express(); app.use(morgan(':date[iso] :remote-addr :method :url :status :res[content-length] - :response-time ms'));

但在我的日志文件(从“npm start”重定向)中,我发现这样的行:

2014-12-21T10:02:59.365Z 127.0.0.1 GET / 304 - - 2.389 ms

显示 127.0.0.1 作为所有请求的远程地址。在加载index.html后,我确实使用了Angular的$routeProvider,但即使/请求也返回127.0.0.1。

app.get('/partials/:name', routes.partials); app.get('*', function (req, res) { res.setHeader('Content-type', 'text/html'); res.charset = 'UTF-8'; res.sendFile(__dirname + '/pub/index.html'); });

我错过了什么吗?实际的请求者不应该记录在这里吗?

logging node.js angularjs

3
推荐指数
1
解决办法
5133
查看次数

标签 统计

angular ×1

angularjs ×1

logging ×1

node.js ×1

observable ×1

rxjs ×1

subject ×1