Angular 11 在一个服务的不相关组件之间共享数据
Angular 11 share data between unrelated components which a service
我正在使用 Angular 11 并且我在 componentB 中有很多方法(以一种方式调用它)
我现在必须从 componentA 调用 componentB 中的许多方法。
我知道我可以将所有方法移动到一个服务中,但在这种情况下,这将需要大量工作,我只需要一个快速的解决方法。
所以我想保持 componentB 的原样,并能够从 componentA 调用它的方法。
componentA 和 componentB 没有关联。
是否有解决方法可以做到这一点而不必将方法移出 componentB?
你可以通过服务来完成,它会被注入到两个组件中
服务可以像这样
@Injectable()
class MyDataService implements IMyDataService {
private whenMessageRecieved$: Subject<MyDataType> =
new ReplaySubject(1);
constructor(
) {
}
public notify(someData: MyDataType): void {
this.whenMessageRecieved$.next(someData);
}
public whenMessageRecieved(): Observable<MyDataType> {
return this.whenMessageRecieved$.asObservable();
}
}
ComponentB 应该订阅 whenMessageRecieved() 并且 componentA 应该使用严格的参数调用通知。在不久的将来,此服务将帮助您从 componentB
迁移方法
但仍然 - 将公共逻辑存储在其他地方会更好,而不是在 componentB
我正在使用 Angular 11 并且我在 componentB 中有很多方法(以一种方式调用它)
我现在必须从 componentA 调用 componentB 中的许多方法。
我知道我可以将所有方法移动到一个服务中,但在这种情况下,这将需要大量工作,我只需要一个快速的解决方法。
所以我想保持 componentB 的原样,并能够从 componentA 调用它的方法。
componentA 和 componentB 没有关联。
是否有解决方法可以做到这一点而不必将方法移出 componentB?
你可以通过服务来完成,它会被注入到两个组件中 服务可以像这样
@Injectable()
class MyDataService implements IMyDataService {
private whenMessageRecieved$: Subject<MyDataType> =
new ReplaySubject(1);
constructor(
) {
}
public notify(someData: MyDataType): void {
this.whenMessageRecieved$.next(someData);
}
public whenMessageRecieved(): Observable<MyDataType> {
return this.whenMessageRecieved$.asObservable();
}
}
ComponentB 应该订阅 whenMessageRecieved() 并且 componentA 应该使用严格的参数调用通知。在不久的将来,此服务将帮助您从 componentB
迁移方法但仍然 - 将公共逻辑存储在其他地方会更好,而不是在 componentB