我的angular 7项目中有很多组件。这些组件之间很难共享一个值,但无法正常工作。我在下面提供了我的代码。任何人都知道如何帮助找到解决方案的方法。
文件夹:我的组件:
app ->
->power
->air
->pollution
->wind
power.component.ts:
@Output() public globalValue= new EventEmitter();
ngOnInit(){
this.globalValue.emit('helloworld');
}
air.component.ts:
@Input() globalValue: string;
ngOnInit(){
console.log(this.globalValue); //Output should be helloworld
}
pollution.component.ts:
@Input() globalValue: string;
ngOnInit(){
console.log(this.globalValue); //Output should be helloworld
}
wind.component.ts:
@Input() globalValue: string;
ngOnInit(){
console.log(this.globalValue); //Output should be helloworld
}
Angular提供了许多我们可以在组件之间共享值的方法。
https://angular.io/guide/component-interaction
但是正如我所看到的,您希望与多个组件共享。您可以创建一个服务,然后任何组件都可以订阅它并获得价值。
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class GlobalService{
// Observable string sources
private globalValueSource = new Subject<string>();
// Observable string streams
globalValueAnnounced$ = this.globalValueSource.asObservable();
// Service message commands
sendGlobalValue(value: string) {
this.globalValueSource.next(value);
}
}
在您的任何组件中,您都可以通过订阅它来获得价值,例如:
constructor(private globalService: GlobalService) {
globalService.globalValueAnnounced$.subscribe(
value => {
console.log(value);
});
}