平常一段歌 發表於 2019-5-5 18:15:00

angular 发布订阅

<p>创建service</p>
<div class="cnblogs_code">
<pre>import { Subject } from 'rxjs/Subject'<span style="color: rgba(0, 0, 0, 1)">;
import { Observable } from </span>'rxjs/observable'<span style="color: rgba(0, 0, 0, 1)">;

export class MessageService {
    private subject </span>= <span style="color: rgba(0, 0, 255, 1)">new</span> Subject&lt;any&gt;<span style="color: rgba(0, 0, 0, 1)">();

    send(message: any) {
      </span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.subject.next(message);
    }

    get(): Observable</span>&lt;any&gt;<span style="color: rgba(0, 0, 0, 1)"> {
      </span><span style="color: rgba(0, 0, 255, 1)">return</span> <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.subject.asObservable();
    }
}</span></pre>
</div>
<p>组件1 发布</p>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;
import { Subject } from </span>'rxjs/Subject'<span style="color: rgba(0, 0, 0, 1)">;
import { MessageService } from </span>'../../service/message.service'<span style="color: rgba(0, 0, 0, 1)">;

@Component({
selector: </span>'app-video-demo-home'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'./video-demo-home.component.html'<span style="color: rgba(0, 0, 0, 1)">,
styleUrls: [</span>'./video-demo-home.component.sass'<span style="color: rgba(0, 0, 0, 1)">]
})
export class VideoDemoHomeComponent implements OnInit {

private _clickPoint: Subject</span>&lt;any&gt; = <span style="color: rgba(0, 0, 255, 1)">new</span> Subject&lt;any&gt;<span style="color: rgba(0, 0, 0, 1)">();
public name </span>= 'www'<span style="color: rgba(0, 0, 0, 1)">;
constructor(public srv: MessageService) { }


ngOnInit() {
}

clickBtn() {
    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.srv.send(<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.name);
}

}</span></pre>
</div>
<p>组件2 订阅</p>
<div class="cnblogs_code">
<pre>import { Component, OnInit } from '@angular/core'<span style="color: rgba(0, 0, 0, 1)">;
import { MessageService } from </span>'../../service/message.service'<span style="color: rgba(0, 0, 0, 1)">;

@Component({
selector: </span>'app-subscribe-home'<span style="color: rgba(0, 0, 0, 1)">,
templateUrl: </span>'./subscribe-home.component.html'<span style="color: rgba(0, 0, 0, 1)">,
styleUrls: [</span>'./subscribe-home.component.sass'<span style="color: rgba(0, 0, 0, 1)">]
})
export class SubscribeHomeComponent implements OnInit {

constructor(public srv: MessageService) { }
public message </span>= ''<span style="color: rgba(0, 0, 0, 1)">;
ngOnInit() {

    </span><span style="color: rgba(0, 0, 255, 1)">this</span>.srv.get().subscribe((result) =&gt;<span style="color: rgba(0, 0, 0, 1)"> {
      console.log(</span>'111111111111111111'<span style="color: rgba(0, 0, 0, 1)">);
      </span><span style="color: rgba(0, 0, 255, 1)">this</span>.message =<span style="color: rgba(0, 0, 0, 1)"> result;
      console.log(</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.message);
    });
}

}</span></pre>
</div>
<p>&nbsp;</p><br><br>
来源:https://www.cnblogs.com/stacey-zy/p/10815380.html
頁: [1]
查看完整版本: angular 发布订阅