angular2 rxjs Observable - предоставленные параметры не соответствуют сигнатуре цели вызова

Я создал следующий компонент, следуя примеру кода Angular для создания нового наблюдаемого объекта (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'); }
    });

  }

}

person Chris Halcrow    schedule 03.05.2018    source источник
comment
удалите ключевое слово function и измените строку последовательности на sequence = new Observable(this.sequenceSubscriber);   -  person Harry Ninh    schedule 04.05.2018


Ответы (1)


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

person Yerkon    schedule 04.05.2018
comment
Спасибо, Еркон. Это работает на вашем StackBlitz, но я получаю ту же ошибку, используя ваш код с Angular CLI 1.7.4, Angular Compiler 5.2.10 и RXJS 5.5.10. - person Chris Halcrow; 07.05.2018
comment
Я понял, что ваш код работает. Я больше не получаю ошибку при компиляции, но я все еще получаю код, отмеченный как ошибка в VS Code с тем же сообщением об ошибке. - person Chris Halcrow; 08.05.2018
comment
@ChrisHalcrow, проверьте версию vsCode TypeScript. Должна совпадать с версией рабочей области ts. - person Yerkon; 08.05.2018