在Angular中,可以通过服务来在组件之间传递数据。下面是一个解决组件之间服务数据未传递的示例:
DataService的服务,在该服务中定义一个可观察的数据源data$,并提供一个公共方法updateData()用于更新数据。import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
@Injectable({
providedIn: 'root'
})
export class DataService {
private data = new BehaviorSubject(''); // 初始化数据
data$ = this.data.asObservable();
constructor() { }
updateData(newData: string) {
this.data.next(newData);
}
}
DataService服务,并调用updateData()方法来更新数据。import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-sender',
template: `
`
})
export class SenderComponent {
newData: string;
constructor(private dataService: DataService) { }
sendData() {
this.dataService.updateData(this.newData);
}
}
DataService服务,并订阅data$可观察对象来获取数据的更新。import { Component } from '@angular/core';
import { DataService } from './data.service';
@Component({
selector: 'app-receiver',
template: `
接收到的数据:{{ receivedData }}
`
})
export class ReceiverComponent {
receivedData: string;
constructor(private dataService: DataService) { }
ngOnInit() {
this.dataService.data$.subscribe(data => {
this.receivedData = data;
});
}
}
SenderComponent和ReceiverComponent,并将DataService提供给它们。import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
import { SenderComponent } from './sender.component';
import { ReceiverComponent } from './receiver.component';
import { DataService } from './data.service';
@NgModule({
imports: [BrowserModule],
declarations: [AppComponent, SenderComponent, ReceiverComponent],
providers: [DataService],
bootstrap: [AppComponent]
})
export class AppModule { }
通过以上步骤,SenderComponent组件中的输入数据将通过DataService服务传递给ReceiverComponent组件,并在ReceiverComponent中显示出来。