title: RxJS: Correct way to manually emit an Observable
body: <p>Working with RxJS in Angular 4.x, I'm seeing two very different patterns for generating Observables from streams of user initiated actions. One stream is the direct result of a user clicking an 'add item' button that generates a new object. The other is a series of events issued by some third party code I'm using. </p>
  
  <p>I want to be able to combine these two streams using something like 'combineLatest' to generate a single Observable. </p>
  
  <p>With my button, I've followed the following pattern:</p>
  
  <pre><code>const signal = Observable.create(
              (observer) =&gt; {
                  this.additem= (item) =&gt; observer.next(item);
              }
          );
  
  this.item$ = signal.map((item) =&gt; [item])
                              .scan((accumulator, value) =&gt; {
                                  return accumulator.concat(value);
                              });
  </code></pre>
  
  <p>However, I'm seeing a lot of information saying I should be using Subjects instead - which I am trying to use with my event callback like so:</p>
  
  <pre><code>sort$ = new Subject();
  
  sortChange(sort){
          sort$.next(sort);
  }
  </code></pre>
  
  <p>Then I'm attempting to combine these like this:</p>
  
  <pre><code>combine$ = Observable.combineLatest(sort$, item$,
                    (sort, items) =&gt; {
                        return "something that does stuff with these";}
          );
  </code></pre>
  
  <p>My questions are - what is the preferred pattern for 'manually' generating streams? Can/should observables and subjects be meshed together into a single observable like I'm trying to do here?</p>