Angular 6:使用Rx.Observable-导入什么?

时间:2018-12-14 15:48:26

标签: angular typescript rxjs angular6 reactive

我想实现这种代码:

    var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 4,
    center: { lat: -25.363, lng: 131.044 }
});

var source = Rx.Observable.fromEventPattern(
    function (handler) {
        return map.addListener('center_changed', handler);
    },
    function (handler, listener) {
        google.maps.event.removeListener(listener);
    }
);
source.subscribe(function () {
    console.log(map.getCenter());
});

我尝试了很多方法,但是我在努力设置导入配置,因此我不会收到与“ Rx.Observable.fromEventPattern”有关的错误。

任何人都可以如何正确设置它。我正在使用“ rxjs”:“〜6.2.0”和Angular 6。

非常感谢

Hucho

2 个答案:

答案 0 :(得分:2)

在使用Rxjs 6时,应按如下所示导入它-

import { fromEventPattern} from 'rxjs';

根据文档,所有可观察的创建方法都应像上面在rxjs 6中一样导入。

所以您的代码应如下所示-

var source = fromEventPattern(
 function (handler) {
        return map.addListener('center_changed', handler);
    },
    function (handler, listener) {
        google.maps.event.removeListener(listener);
    }
  );

您也可以像上面一样导入Observable

请参阅此迁移文档: https://github.com/ReactiveX/rxjs/blob/master/docs_app/content/guide/v6/migration.md

答案 1 :(得分:0)

感谢您的帮助。终于成功了:

public $getBounds(): Observable<any> {
    let map = this.map;
    return fromEventPattern(
      function (handler) {
        google.maps.event.addListener(map, 'idle', handler);
      },
      function (handler, listener) {
        google.maps.event.removeListener(listener);
      }
    )
  }

我需要有呼叫者签名...

Hucho