Observable.next () не является функцией - PullRequest
0 голосов
/ 30 апреля 2018

Привет, я новичок в угловой.

Я не знаю, почему я не могу установить новое значение в моем Observable

Мой код:

resultJob: Observable<any> = Observable.of("PENDING");

ngOnInit() {
    this.resultJob.subscribe(result => {
        result.next("SUCCESS")
        result.complete()
    })
}

Этот код возврата result.next is not a function

Ответы [ 2 ]

0 голосов
/ 30 апреля 2018

вот примерный пример наблюдателя. Для получения дополнительной информации о взаимодействии компонентов вы можете обратиться к этому документу Взаимодействие компонентов

Шаг 1: - app.module.ts

 import { UserService } from './user.service';
 @NgModule({
    providers: [
     UserService
    ]
 })

Шаг 2: - user.service.ts

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';

@Injectable()
export class UserService {
    users: any = null;
    nativeWindow: any;
    private userAddedSource = new Subject<any>();
    userAdded$ = this.userAddedSource.asObservable();

    addNewUser(user) {
      this.userAddedSource.next({ user: user });
    }
  }

Шаг 3: - добавить этот код в свой компонент для отправки данных

 this.userService.addNewUser({name:'xyz'}); // your data

Шаг 4: - На компоненте вашего приемника

 ngOnInit() {
   this.userService.userAdded$.subscribe(data => {
      console.log(data.user);
    });
 }
0 голосов
/ 30 апреля 2018

Нет следующего () в Observable; только для Subject и BehaviorSubject, которые расширяют Subject (и оба расширяют Observable).

Что вам нужно сделать, это:

resultJob: Subject<string> = new BehaviorSubject<string>("PENDING");

BehaviorSubject в отличие от Subject инициализируется первым значением, которое помещается в поток. Похоже, это то, что вы хотите сделать.

Также результат имеет тип string, а не тип Observable. Вы хотите вызывать next () для resultJob, а не для result (элемент внутри потока). Но я не понимаю, почему вы делаете это в подписке. Вы будете получать циклические вызовы таким образом: вы помещаете новый элемент в поток и реагируете на его обнаружение, нажимая другой элемент и так далее ...

...