首页 > 解决方案 > angular2 rxjs Observable - 提供的参数不符合调用目标的签名

问题描述

我按照 Angular 代码示例创建了以下组件,用于构建新的 observable ( https://angular.io/guide/observables#creating-observables )。

我在尝试创建新的 Observable 的那一行出现错误,正如我在下面的代码示例中所指出的那样。错误是“提供的参数不符合调用目标的签名”

我错过了什么?

import { Component, OnInit } from '@angular/core';
import { Observable } from 'rxjs/Observable';

@Component({
  selector: 'app-constructed-observable',
  templateUrl: './constructed-observable.component.html',
  styleUrls: ['./constructed-observable.component.css']
})
export class ConstructedObservableComponent implements OnInit {

  constructor() { }

  // error on Observable below 'supplied parameters do not meet signature of call target'
  const sequence = new Observable(sequenceSubscriber);

  function sequenceSubscriber(observer) {
    observer.next(1);
    observer.next(2);
    observer.next(3);
    observer.complete();

    return {unsubscribe() {}};
  }

  ngOnInit() {

    this.sequence.subscribe({
      next(num) { console.log(num); },
      complete() { console.log('completed'); }
    });

  }

}

标签: javascriptangularrxjsobservableangular2-observables

解决方案


sequence用于ngOnInit但未定义为类属性。

使固定。组件.ts:

 sequence: Observable<number>;

  constructor() {
    // error on Observable below 'supplied parameters do not meet signature of call target'
    this.sequence = new Observable(sequenceSubscriber);

    function sequenceSubscriber(observer) {
      observer.next(1);
      observer.next(2);
      observer.next(3);
      observer.complete();

      return { unsubscribe() { } };
    }
  }

StackBlitz 演示


推荐阅读