Join egghead, unlock knowledge.

Want more egghead?

This lesson is for members. Join us? Get access to all 3,000+ tutorials + a community with expert developers around the world.

Unlock This Lesson
Become a member
to unlock all features

Level Up!

Access all courses & lessons on egghead today and lock-in your price for life.


    Handle Click Events with Subjects

    John LindquistJohn Lindquist
    2 - 6
    5 - 6

    While Angular usually uses event handlers to manage events and RxJS typically uses Observable.fromEvent, a good practice when using Angular and RxJS combined is to use Subjects and push the value through each event so that you can use it as part of your stream.



    Become a Member to view code

    You must be a Member to view code

    Access all courses and lessons, track your progress, gain confidence and expertise.

    Become a Member
    and unlock code for this lesson




    To add a button to control our clock, I'll go ahead and create a button. I'll just say, "update." Typically, what you do in Angular 2 is say, "click" and then just give that a handler on click. Here, you'd create that on click handler.

    Or from the other side, typically, what you do in our XJS is you'd say, "observable from event." Find the element, and then pass in the event name you want to listen to.

    We have these two different conflicting approaches where we want to find an event, or we want to handle a click here. The way we're going to solve this for now is I'm going to delete this event handler. I'm going to delete this from event.

    What I'm going to do is create something called a subject, which I'll call "click." This will be a new subject. I need to import subject. What this subject will allow me to do is call next every time I click.

    What next is going to do is push the stream forward one tick. If I take out all of this clock stuff, which was just going every second before. Now I say this.clock is

    I'm going to map those clicks to a new date. Hit save. I refresh over here. I'll click update. You can see we get our clock frozen in time at 44 seconds. I'll click update again. You can see that six seconds have passed.