Angular 创建 可观察对象(Observable)
<div class="cnblogs_code"><pre><span style="color: rgba(0, 0, 0, 1)">message.service.ts
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建可观察对象</span>
import { Injectable } <span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@angular/core</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
import {Observable} </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">rxjs</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
import { Subject } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">rxjs</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
@Injectable()
export </span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> MessageService {
</span><span style="color: rgba(0, 0, 255, 1)">private</span> subject = <span style="color: rgba(0, 0, 255, 1)">new</span> Subject<any><span style="color: rgba(0, 0, 0, 1)">();
sendMessage(message: </span><span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">) {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.subject.next({ text: message });
}
clearMessage() {
</span><span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.subject.next();
}
getMessage(): 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>
<div class="cnblogs_code">
<pre><span style="color: rgba(0, 0, 0, 1)">home.component.ts
import { Component } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">@angular/core</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">;
import { MessageService } </span><span style="color: rgba(0, 0, 255, 1)">from</span> <span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">src/app/service/single.service</span><span style="color: rgba(128, 0, 0, 1)">'</span></pre>
<div> import { Subscription } from 'rxjs';</div>
<pre><span style="color: rgba(0, 0, 0, 1)">
@Component({
templateUrl: </span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">home.component.html</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">
})
export </span><span style="color: rgba(0, 0, 255, 1)">class</span><span style="color: rgba(0, 0, 0, 1)"> HomeComponent </span>OnDestroy</pre>
<pre><span style="color: rgba(0, 0, 0, 1)">{</span></pre>
<div> subscription: Subscription;</div>
<pre><span style="color: rgba(0, 0, 0, 1)"> constructor(</span><span style="color: rgba(0, 0, 255, 1)">private</span><span style="color: rgba(0, 0, 0, 1)"> messageService: MessageService) {
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 创建观察者</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.subscription = <span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.messageService.getMessage()
.subscribe(message </span>=> { console.log(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">message</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">, message) });
</span><span style="color: rgba(0, 0, 255, 1)">this</span>.sendMessage() <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 发短信</span>
<span style="color: rgba(0, 0, 0, 1)">}
sendMessage(): </span><span style="color: rgba(0, 0, 255, 1)">void</span> { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 发送消息</span>
<span style="color: rgba(0, 0, 255, 1)">this</span>.messageService.sendMessage(<span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(128, 0, 0, 1)">Message from Home Component to App Component!</span><span style="color: rgba(128, 0, 0, 1)">'</span><span style="color: rgba(0, 0, 0, 1)">);
}
clearMessage(): </span><span style="color: rgba(0, 0, 255, 1)">void</span> { <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)"> 清除消息</span>
<span style="color: rgba(0, 0, 255, 1)">this</span><span style="color: rgba(0, 0, 0, 1)">.messageService.clearMessage();
}<br><br></span></pre>
<div>
<div> ngOnDestroy() {</div>
<div> // 关闭监听</div>
<div> this.subscription.unsubscribe();</div>
<div> }</div>
</div>
<pre><span style="color: rgba(0, 0, 0, 1)">
} </span></pre>
</div>
<p> </p><br><br>
来源:https://www.cnblogs.com/lvsk/p/12922914.html
頁:
[1]