2 回答
TA贡献1824条经验 获得超6个赞
你可以Subject从rxjs图书馆使用。
在您的服务文件中:
// a-service.service.ts
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class AService {
private subject = new Subject<any>();
trigger(state: boolean) {
this.subject.next(state);
}
getTrigger(): Subject<any> {
return this.subject;
}
}
在你的AppComponent:
// app.component.ts
...
private show = false;
constructor (private aService: AService) { }
ngOnInit() {
this.aService.getTrigger().subscribe(state => {
this.show = state;
});
}
模板可以是您提供的 - 很好:
<div *ngIf="!show; else show">
<app-a></app-a>
</div>
<ng-template #show>
<app-b></app-b>
</ng-template>
如果你想从另一个组件触发,你可以这样做:
// another.component.ts
...
constructor (private aService: AService) { }
ngOnInit() {
this.aService.trigger(true);
}
TA贡献1796条经验 获得超4个赞
在不直接相关的不同组件和服务之间进行通信的一种方法是通过“主题”。
您可以尝试创建一个主题并将值从myService.trigger()
. subject
您可以从要访问该触发器数据的任何组件订阅它。
添加回答
举报