【发布时间】:2021-04-23 17:00:05
【问题描述】:
我有一个组件显示几秒钟的消息,我的问题是我无法订阅服务并执行必要的操作,怎么办?
这是一个简短的例子,我想在项目的所有阶段调用消息组件,我该怎么做?
homeComponent.ts:
export class HomeComponent {
constractor(privat _service:IHomeService){}
getMessage(){
this._service.get();
}
}
homeComponent.html:
<p (click)="getMessage()">
show Message
</p>
homeService.ts:
@Injectable()
export class HomeService {
openMessage=new Subject<string>();
get() {
setTimeout(()=>{
this.openMessage.next("test")
},1000)
}
}
messageComponent.ts:
export class MessageComponent {
constructor(private _service:HomeService){
this._service.openMessage.subscribe((res)=>{
this.name=res;
this.flag=true;
setTimeout(()=>{
this.flag=false;
},4000)
})
}
name = '';
flag:boolean=false
}
messageComponent.html:
<p [ngStyle]="flag?'display:block':'display:none'">
{{name}}
</p>
我认为这不会发生,因为未加载消息组件 如何将其加载到服务中?
【问题讨论】:
-
messageComponent的选择器包含在哪里?类似<app-message></app-message> -
我不想在任何地方包含它,我想在服务中加载,因为它是针对整个项目而不是特定部分的
-
检查
Subject和BehaviourSubject与link 的区别。您可能需要将Subject替换为BehaviourSubject。
标签: angular angular-observable