2 回答

TA貢獻1824條經(jīng)驗 獲得超6個贊
你可以Subject從rxjs圖書館使用。
在您的服務(wù)文件中:
// 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>
如果你想從另一個組件觸發(fā),你可以這樣做:
// another.component.ts
...
constructor (private aService: AService) { }
ngOnInit() {
this.aService.trigger(true);
}

TA貢獻1796條經(jīng)驗 獲得超4個贊
在不直接相關(guān)的不同組件和服務(wù)之間進行通信的一種方法是通過“主題”。
您可以嘗試創(chuàng)建一個主題并將值從myService.trigger()
. subject
您可以從要訪問該觸發(fā)器數(shù)據(jù)的任何組件訂閱它。
添加回答
舉報