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<any><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><any><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><any> = <span style="color: rgba(0, 0, 255, 1)">new</span> Subject<any><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) =><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> </p><br><br>
来源:https://www.cnblogs.com/stacey-zy/p/10815380.html
頁:
[1]