Тема внутри метода подписки RXJS - PullRequest
0 голосов
/ 31 декабря 2018

Я клонировал один репозиторий Github на основе RXJS с угловым 2+.Помогите мне понять значение this.createTodo $ .subscribe (this.create $) в приведенном ниже коде.

Я могу понять, что здесь мы пытаемся подписаться на createTodo $ observable. Внутри метода подписки я всегдаустановить данные, но что значит this.create $. Здесь create $ является субъектом.

Пожалуйста, найдите код службы, на которую оформлена эта подписка.

import { Injectable } from '@angular/core';
import { BehaviorSubject, Observable ,Subject} from 'rxjs';
import {  itemmodel } from './models/listmodel';
import {scan,map} from 'rxjs/operators';

type TodosOperation = (todos: itemmodel[]) => itemmodel[];
const initialTodos=[];

@Injectable({
  providedIn: 'root'
})

export class SharedserviceService {
  public data;
  create$: Subject<itemmodel> = new Subject<itemmodel>();
  createTodo$: Subject<itemmodel> = new Subject<itemmodel>();
  todos$:Observable<itemmodel[]>;
  public item = new BehaviorSubject([]);
  update$: BehaviorSubject<TodosOperation> = new BehaviorSubject<TodosOperation>((todos: itemmodel[]) => todos);

  constructor(){ 
    this.todos$ = this.update$.pipe(scan((todos: itemmodel[], operation: TodosOperation) => operation(todos), initialTodos));

    this.create$.pipe(map((todo) => {
      return (todos) => todos.concat(todo);
    })).subscribe(this.update$);

    this.createTodo$.subscribe(this.create$);
  }

  public additem(item){
    this.createTodo$.next(item);
  }

}

1 Ответ

0 голосов
/ 31 декабря 2018

это соглашение об именах.Используя знак доллара ($), вы указываете, что переменная является потоком (наблюдателем).

для просмотра потока вы подписаны на него

...