我正在尝试将数据从一个同级组件发送到另一个同级组件,但是它没有按预期工作
下面是service.ts文件
private _testIdSource = new Subject<number>();
test_id = this._testIdSource.asObservable();
sendTestId(test_id : number){
console.log(test_id);//showing data
this._testIdSource.next(test_id);
}
此组件将表单中的输入作为id
addQuestions(test_id:number){
console.log(test_id);//showing data
this.service.sendTestId(test_id);
this.router.navigate(['/editTest']);
}
该组件应该接收数据并将其初始化为全局变量testId
,但是我很难将全局变量的值设置为接收到的数据
ngOnInit() {
this.service.test_id
.subscribe(
message=> {
if(message != null){
this.testId = message;
console.log('test_id value received -> '+this.testId);//showing data
}else{
console.log('null value received');
}
}
);
console.log(this.testId);//says undefined
}
请帮助
答案 0 :(得分:2)
您可以使用简单的TypeScript Setter and Getter而不是Observable(必须取消订阅,以防止内存泄漏)将值传递给同级组件。
service.ts
test_id: number;
get testId(): string {
return this.test_id;
}
set testId(id): string {
this.test_id = id;
}
通过组件设置ID
addQuestions(test_id: number) {
this.service.testId = test_id;
}
最终获得价值
ngOnInit() {
const testId = this.service.testId
console.log(testId);
}
希望此地址能解决您的问题。